如果请求未解决,请继续url匹配 - Django

时间:2014-01-03 21:19:50

标签: python django django-views django-urls

我不确定它是否非常具体,但我认为我要问的是在不同背景下的不同地方使用。我的问题主要与我为Django应用程序创建的URL模式有关。我需要一个适用于所有应用程序用户的配置文件URL,因此我创建了一个URL模式,如下所示。

urlpatterns = patterns('apps.user_profile.views',
    url(r"^(?P<username>\w+)/$", 'user_profile', name="user_profile_page"),
    url(r"^app/$", 'app', name="app_page"),
)

非常清楚,我正在路径中使用用户名映射URL以动态获取用户数据。这工作正常,但问题出现在系统收到app页面的请求时。在这种情况下,请求会转到用户个人资料,因为它接受所有类型的字词,并在app urls.py user_profile视图之前进行排序。

问题: 有没有办法指定在urls.py视图中未解决请求的情况下继续查看应用的{{1}}中的其他网址?

1 个答案:

答案 0 :(得分:0)

模式按照它们的编写顺序进行匹配,因此只需在用户名模式之前移动app模式即可解决问题:

urlpatterns = patterns('apps.user_profile.views',
    url(r"^app/$", 'app', name="app_page"),
    url(r"^(?P<username>\w+)/$", 'user_profile', name="user_profile_page"),

)

现在,只有当网址 不匹配app/时,它才会被发送到您的用户个人资料视图。

当然,如果用户使用app用户名注册,您就会遇到问题。