/ / Problem mit Namespace-URL-Auflösung in Django - Python, Django, Django-Admin, Django-Ansichten, URL-Routing

Problem mit namespaced URL-Auflösung in Django - Python, Django, Django-Admin, Django-Ansichten, URL-Routing

Ich habe ein Problem mit der URL-Auflösung in einer Einladungs-App, die ich schreibe.

Im Wesentlichen habe ich eine Umleitungsansicht, die einen authentifizierten Benutzer entweder zu einem Dashboard umleitet, wenn er Mitarbeiter ist, oder zu einer Einladungsseite, wenn er kein Mitarbeiter ist. Einfach genug, oder?

Unabhängig davon, ob der Benutzer Mitarbeiter ist oder nicht, wird der Benutzer in die Einladungsansicht umgeleitet.

Die rauchende Waffe ist der Wert für response.resolver_match, den ich in einem meiner Unit-Tests gezogen habe

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

Das seltsamste ist, dass die Browser-URL / invitation / dashboard / lautet, wenn ich mich tatsächlich als Mitarbeiter anmelde.

Hier sind meine 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 view

@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]))

Mir fehlen die Ideen dazu ... es ist komisch. Ich verstehe es nicht.

JEDE Hilfe wird geschätzt :)

Antworten:

0 für die Antwort № 1

Vorsicht vor der gierigen URL ...

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"),
]

Das Umorganisieren der URLs war alles was es brauchte.