首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django 1.9.1使用NoReverseMatch时使用django.auth

Django 1.9.1使用NoReverseMatch时使用django.auth
EN

Stack Overflow用户
提问于 2016-02-08 19:03:12
回答 1查看 1K关注 0票数 2

我正试图通过学习"Django by settings.py“一书来学习django,而且可能由于版本之间的冲突,我在尝试使用settings.py中的一些URL设置时遇到了这个问题。我现在非常沮丧,因为我不知道如何开始调试这个错误。任何帮助或建议都将不胜感激,以下是settings.py文件的相关部分

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
LOGIN_REDIRECT_URL = reverse_lazy('account:dashboard')
LOGIN_URL = reverse_lazy('account:login')
LOGOUT_URL = reverse_lazy('account:logout')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 20:13:32

当您使用app_name时,它将设置一个命名空间,当您在其他地方include()该urls.py时将使用该名称空间。

因此,没有名为"login"的url,而是名为"account:login",必须传递的名称才能进行反向()。

代码语言:javascript
运行
复制
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路由。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35277269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档