面对用户个人资料网址方案的问题,例如django中的example.com/username

时间:2010-09-12 12:21:35

标签: django django-urls user-profile

在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最佳实践(陷阱,陷阱等),其中第一部分本身是可变的。

由于

1 个答案:

答案 0 :(得分:2)

我不明白为什么您的网址无效。您可以尝试将第一个模式移动到最后,以便其他模式有机会先匹配。您描述的问题听起来像example.com/user/any-page,模式匹配“user / any-page”作为帐户名称。你展示的正则表达式不会那样做,但也许你的实际代码略有不同?