所以我有一个主urls.py看起来像这样:
urlpatterns = patterns('',
(r'^users/(?P<username>.*)/', include('app.urls')),
url(r'^users/(?P<username>.*)$',direct_to_template,{'template':'accounts/profile.html'}, name='profile'),)
和app.urls.py
urlpatterns = patterns('',url(r'^app/create/$', create_city ,name='create_city'),)
我的问题是,当我localhost:8000 / users / michael / app / create /它没有调用我的视图。我试过没有运气改变网址的顺序,所以我相信我的问题是正则表达式,但不知道要改变什么,任何人?
答案 0 :(得分:1)
命名组(?P<username>.*)
将匹配任何字符,零次或多次。在您的用户名中,包括正斜杠。
在网址模式中,使用(?P<username>[-\w]+)
会更常见。这将匹配来自小写a-z,大写A-Z,数字0-9连字符和下划线的集合中的至少一个字符。
我还建议您为profile
视图的模式添加尾部斜杠。
总而言之,我建议您使用以下内容作为urls.py
的起点:
urlpatterns = patterns('',
url(r'^users/(?P<username>[-\w]+)/$',direct_to_template, {'template':'accounts/profile.html'}, name='profile'),
(r'^users/(?P<username>[-\w]+)/', include('app.urls')),
)