python - Django 1.9.1 NoReverseMatch when using django.auth -
i'm trying learn django following book "django example" , due conflicting versions i'm running problem when trying use django.auth url settings in settings.py. im getting totally frustrated since have no idea how begin debugging error. or advice appreciated here's relevant part of settings.py file
from django.core.urlresolvers import reverse_lazy login_redirect_url = reverse_lazy('dashboard') login_url = reverse_lazy('login') logout_url = reverse_lazy('logout') app views.py:
from django.shortcuts import render, redirect django.shortcuts import httpresponse django.contrib.auth import authenticate, login, logout .forms import loginform django.contrib.auth.decorators import login_required # create views here. @login_required def dashboard(request): return render(request, 'account/dashboard.html', {'section': 'dashboard'}) urls.py
from django.conf.urls import url . import views app_name = 'account' urlpatterns = { url(r'^$', views.dashboard, name='dashboard'), url(r'^login/$', 'django.contrib.auth.views.login', name='login'), url(r'^logout/$', 'django.contrib.auth.views.logout', name='logout'), url(r'^logout-then-login/$', 'django.contrib.auth.views.logout_then_login', name='logout_then_login'), } main urls.py :
from django.conf.urls import url, include django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^account/', include('account.urls')), ] updated settings.py :
login_redirect_url = reverse_lazy('account:dashboard') login_url = reverse_lazy('account:login') logout_url = reverse_lazy('account:logout')
when use app_name sets namespace used when include() urls.py somewhere else.
so there's no url name "login", instead it's called "account:login", , that's name have pass reverse().
login_redirect_url = reverse_lazy('account:dashboard') login_url = reverse_lazy('account:login') logout_url = reverse_lazy('account:logout') relevant docs: url namespaces , included urlconfs
if using django-extensions (you should), can use management command show_urls nicely formatted list of url routes registered in project.
Comments
Post a Comment