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 № 1Vorsicht 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.