Django中的命名空间URL解析问题

时间:2016-03-06 02:54:58

标签: python django django-admin django-views url-routing

我在我正在撰写的邀请函中遇到了网址解析问题。

基本上我有一个重定向视图,如果他们是员工,则将经过身份验证的用户重定向到仪表板,如果他们不是员工,则重定向到邀请页面。很简单吧?

但是,无论用户是否为员工,用户都会被重定向到邀请视图。

吸烟枪是response.resolver_match的值,我参加了我的一次单元测试

ResolverMatch(func=invitation.views.invitation, args=(), kwargs={'invitation_name': 'dashboard'}, url_name=invitation, app_names=[], nam
espaces=['invitation'])

最奇怪的是,如果我真的以工作人员身份登录,那么浏览器网址是/ invitation / dashboard /

这是我的urls.py

urlpatterns = [
url(r'^invitation/', include("invitation.urls", namespace="invitation")),
url(r'^login-redirect/$', login_redirect, name="login_redirect"),
url(r'^$',
    login,
    {"template_name": "invitation/login.html"},
    name="login"),
]

invitation.urls

urlpatterns = [
url(r'(?P<invitation_name>[\w]+)/$', views.invitation, name="invitation"),
url(r'add-invitation/$', views.add_invitation, name="add_invitation"),
url(r'dashboard/$', views.dashboard, name="dashboard"),
]

login_redirect视图

@login_required
def login_redirect(request):
    if request.user.is_staff:
        return redirect(reverse("invitation:dashboard"))
    else:
        return redirect(
            reverse("invitation:invitation",
            args=[request.user.username]))

我对这一切都没有想法......这很奇怪。我不明白。

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

小心贪婪的网址......

urlpatterns = [
    url(r'dashboard/$', views.dashboard, name="dashboard"),
    url(r'(?P<invitation_name>[\w]+)/$', views.invitation, name="invitation"),
    url(r'add-invitation/$', views.add_invitation, name="add_invitation"),
]

只需重新组织网址即可。