2017-08-27 2 views
0

Im essayant d'ajouter cette URL aux urlpatterns de mon application (c.-à-MyProject/MyApp/urls.py):Django ajoutant l'espace de noms aux urls donne l'erreur Reverse pour 'login' non trouvé. « Login » est pas une fonction d'affichage valide ou nom du motif

url(r'^login/$', auth_views.LoginView.as_view(), name='login') 

Je cet extrait dans un de mes modèles:

<a href="{% url 'login' %}">Login</a> 

Normalement, en cliquant sur le lien vous amène à la page de connexion avec succès. Cependant, lorsque je tente d'ajouter un espace de noms à mes urls (app_name = my_namespace) et changer l'inverse

<a href="{% url 'my_namespace:login' %}">Login</a> 

échoue lorsque je clique sur le lien et je reçois l'erreur

Reverse for 'login' not found. 'login' is not a valid view function or 
pattern name. 

Bien que toutes les autres URLs que je reverse fonctionnent avec l'espace de noms, c'est juste l'inversion de connexion qui échoue. Une idée pourquoi?

Edit: MyProject/MyProject/urls.py:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^clubinfo/', include('ClubInfo.urls')), 
] 

MyProject/MyApp/urls.py:

app_name = 'clubinfo' 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^register/$', views.register, name='register'), 
    url(r'^login/$', auth_views.LoginView.as_view(), name='login'), 
] 

Un extrait de la matrice:

<a href="{% url 'clubinfo:index' %}">Home</a> 
<a href="{% url 'clubinfo:login' %}">Login</a> 
<a href="{% url 'clubinfo:register' %}">Register</a> 

Je peux cliquer sur Accueil et s'inscrire, pas se connecter

Edit 2: auth_views est de cette importation:

from django.contrib.auth import views as auth_views 

Je pense que cela peut avoir quelque chose à voir avec la raison pour laquelle le programme soulève une erreur.

+0

MyApp.urls est-il inclus dans MyProject.urls? –

+0

Oui, tous les autres URL dans l'application fonctionne, il semble que ce soit juste la connexion qui ne fonctionne pas. –

+0

Ok. Quelle est l'URL dans la barre d'adresse du navigateur après avoir cliqué sur le lien? –

Répondre

0

Il s'avère que le problème était dans mon fichier login.html que Django affiche dans son LoginView. Je n'ai pas utilisé l'espace de noms dans l'un de mes revers dans ce fichier.

0

dans vos urls projet font ceci:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^clubinfo/', include('ClubInfo.urls', namespace='clubinfo')), 
] 

maintenant Clubinfo urls: supprimer

app_name = 'clubinfo' 

run de serveur et essayez cela devrait fonctionner que ma façon de faire