0

所以我有一个看起来像这样的主要 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/ 它不会调用我的视图。我尝试过更改网址的顺序但没有运气,所以我相信我的问题出在正则表达式上,但不知道要更改什么,有人吗?

4

1 回答 1

1

命名组(?P<username>.*)将匹配任何字符,零次或多次。在您的用户名中,包括正斜杠。

在 url 模式中,使用(?P<username>[-\w]+). 这将匹配一组小写 az、大写 AZ、数字 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')), 
)
于 2012-10-11T00:20:20.957 回答