在django应用程序中,我需要创建具有以下结构的Twitter用户个人资料网址:
example.com/<username>
example.com/<username>/friends
example.com/<username>/blog
example.com/<username>/some-page
example.com/<username>/some-other-page
我的urls.py:
urlpatterns = patterns('profiles.views',
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/$', 'show_profile', name='profiles_show_profile'),
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/friends/$', 'show_friends', name='profiles_show_blog'),
url(r'^(?P<account_name>[a-zA-Z0-0_.-]+)/blog/$', 'show_blog', name='profiles_show_blog'),
)
我的第一个问题是虽然example.com/<username>
工作正常example.com/<username>/any-other-page
却没有。它们都以show_profile
视图而不是自己的视图结束。
注意:如果我将网址结构更改为example.com/user/<username>
我在这里做错了什么?请指教。
其次,我想在处理url方案时指导django最佳实践(陷阱,陷阱等),其中第一部分本身是可变的。
由于
答案 0 :(得分:2)
我不明白为什么您的网址无效。您可以尝试将第一个模式移动到最后,以便其他模式有机会先匹配。您描述的问题听起来像example.com/user/any-page
,模式匹配“user / any-page”作为帐户名称。你展示的正则表达式不会那样做,但也许你的实际代码略有不同?