我能找到的所有 django 站点的 urlpatterns 示例都有一个单独的条目,用于输入没有前导斜杠或根文件夹的 url。然后他们处理每一行的子文件夹。我不明白为什么一个简单的
/?
正则表达式不允许这些在一个简单的行上。
考虑以下情况,我们将 Django 项目称为 Baloney,App 名称为 Cheese。所以在项目 urls.py 我们有这样的东西来允许应用程序 urls.py 处理它的请求......
urlpatterns = patterns('',
(r'^cheese/', include('Baloney.Cheese.urls')),
)
然后在 Cheese 应用程序 urls.py 内部,我不明白为什么这一简单的行不会触发所有传入的 url 子路径,包括一个空白值......
urlpatterns = patterns('',
(r'^(?P<reqPath>.*)/?$', views.cheeseapp_views),
)
相反,它匹配空白大小写,但不匹配存在值的大小写。所以...
http://baloneysite.com/cheese/ --> MATCHES THE PATTERN
http://baloneysite.com/cheese/swiss --> DOES NOT MATCH
基本上我想捕获 reqPath 变量以包含任何内容(甚至是空白或''),但不包括任何尾随斜杠(如果有的话)。
url 是从数据库中提取的动态 slug,因此我对视图中的内容进行了所有匹配,并且只需要 url 模式来转发值。我知道以下工作,但不明白为什么不能将其全部与/放在一行?结束 $ 符号之前的正则表达式。
(r'^$', views.cheeseapp_views, {'reqPath':''}),
(r'^(?P<reqPath>.*)/$', views.cheeseapp_views),
欣赏任何见解。