J'ai un problème de résolution d'url dans une application d'invitation que je suis en train d'écrire.
J'ai essentiellement une vue de redirection qui redirige un utilisateur authentifié vers un tableau de bord s'il s'agit d'un membre du personnel ou vers une page d'invitation s'il ne s'agit pas d'un membre du personnel. Assez simple non?
Toutefois, que l'utilisateur soit membre du personnel ou non, il est redirigé vers la vue d'invitation.
Le pistolet fumant est la valeur de response.resolver_match que j'ai tirée dans l'un de mes tests unitaires
ResolverMatch(func=invitation.views.invitation, args=(), kwargs={"invitation_name": "dashboard"}, url_name=invitation, app_names=[], nam
espaces=["invitation"])
Le plus étrange, c’est que si je me connecte en tant que membre du personnel, l’URL du navigateur est / invitation / dashboard /
Voici mes 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 voir
@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]))
Je suis tout à court d’idées sur ça… c’est bizarre. Je ne comprends pas.
Toute aide est appréciée :)
Réponses:
0 pour la réponse № 1Attention à l'url gourmande ...
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"),
]
Réorganiser les urls était tout ce qu'il fallait.