我正试图通过学习"Django by settings.py“一书来学习django,而且可能由于版本之间的冲突,我在尝试使用settings.py中的一些URL设置时遇到了这个问题。我现在非常沮丧,因为我不知道如何开始调试这个错误。任何帮助或建议都将不胜感激,以下是settings.py文件的相关部分
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
from django.shortcuts import HttpResponse
from django.contrib.auth import authenticate, login, logout
from .forms import LoginForm
from django.contrib.auth.decorators import login_required
# Create your views here.
@login_required
def dashboard(request):
return render(request, 'account/dashboard.html', {'section': 'dashboard'})
urls.py
from django.conf.urls import url
from . 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'),
}
主urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^account/', include('account.urls')),
]
错误消息
更新的settings.py:
LOGIN_REDIRECT_URL = reverse_lazy('account:dashboard')
LOGIN_URL = reverse_lazy('account:login')
LOGOUT_URL = reverse_lazy('account:logout')
发布于 2016-02-08 20:13:32
当您使用app_name
时,它将设置一个命名空间,当您在其他地方include()
该urls.py时将使用该名称空间。
因此,没有名为"login"
的url,而是名为"account:login"
,必须传递的名称才能进行反向()。
LOGIN_REDIRECT_URL = reverse_lazy('account:dashboard')
LOGIN_URL = reverse_lazy('account:login')
LOGOUT_URL = reverse_lazy('account:logout')
相关文档:URL名称空间和包含的URLconfs
如果您正在使用django-扩展 (您应该使用),您可以使用show_urls
管理命令来获得一个格式良好的列表,列出在您的项目中注册的所有url路由。
https://stackoverflow.com/questions/35277269
复制相似问题