首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoReverseMatch /account/登录/

NoReverseMatch /account/登录/
EN

Stack Overflow用户
提问于 2020-01-22 17:12:18
回答 1查看 978关注 0票数 0

我试图找出Django默认的auth,当我使用正确的凭据登录时,它会给我这个错误

代码语言:javascript
复制
NoReverseMatch at /account/login/
Reverse for 'dashboard' not found. 'dashboard' is not a valid view function or pattern name.
Request Method: POST
Request URL:    http://127.0.0.1:8000/account/login/
Django Version: 2.2
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'dashboard' not found. 'dashboard' is not a valid view function or pattern name.
Exception Location: C:\Users\nouma\Desktop\social_website\myenv\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 660

我见过一些类似的问题,但不明白我的问题到底是什么。我混淆了reverse 的概念。这是我的views.py

代码语言:javascript
复制
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import authenticate, login
from .forms import LoginForm
from django.contrib.auth.decorators import login_required
# Create your views here.

def user_login(request):
    if request.method == 'POST':
        form = LoginForm(data=request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate(request, username=cd['username'], password=cd['password'])

            if user is not None:
                if user.is_active:
                    login(request, user)
                    return HttpResponse('Authenticated successfully')
                else:
                    return HttpResponse('Disabled account')
            else:
                return HttpResponse('Invalid login')
    else:
        form = LoginForm()
    return render(request, 'account/login.html', {'form': form})

@login_required
def dashboard(request):
    return render(request, 'account/dashboard.html', {'section': 'dashboard'})

这是我的主要项目urls.py

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('account/', include('django.contrib.auth.urls')),
    path('account/', include('account.urls', namespace='account')),
]

应用程序的urls.py,名为account

代码语言:javascript
复制
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views

app_name = 'account'

urlpatterns = [
    # login view
    # path('login/', views.user_login, name='user_login'),

    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('', views.dashboard, name='dashboard'),
]

我的dasboard.html

代码语言:javascript
复制
{% extends 'base.html' %}

{% block title %}Dashboard{% endblock %}

{% block content %}
  <h1>Dashboard</h1>
  <p>Welcome to your dashboard</p>
{% endblock %}

login.html

代码语言:javascript
复制
{% extends "base.html" %}

{% block title %}Log-in{% endblock %}

{% block content %}
  <h1>Log-in</h1>
  {% if form.errors %}
    <p>Your username or password didn't match. Please try again</p>
  {% else %}
    <p>Please, use the following form to log-in:</p>
  {% endif %}
  <div class="login-form">
    <form action="{% url 'login' %}" method="POST">
      {{ form.as_p }}
      {% csrf_token %}
      <input type="hidden" name="next" value="{{ next }}" />
      <p><input type="submit" value="Log-in"></p>
    </form>
  </div>
{% endblock %}

我认为这个问题很小,但我无法配置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-23 05:08:21

您已经创建了一个自定义应用程序account,您没有在app/urls.py文件中为其定义url。

您可以添加帐户url,如

代码语言:javascript
复制
urlpatterns = [
  path('account/', include('django.contrib.auth.urls')),
  path('account/', include('account.urls', namespace='account'))
]

现在,您可以为account应用程序中定义的urls创建反向urls。

编辑2

另外,由于您已经在django.contrib.auth文件中定义了account/urls.py视图,所以不需要在app/urls.py文件中添加django.contrib.auth.urls的url。

LOGIN_REDIRECT_URL

根据文档,它接受pathnamed url模式。

建议的方法是使用path。对于named用法,您可以尝试使用以下方法

代码语言:javascript
复制
LOGIN_REDIRECT_URL = 'account:login'
LOGIN_REDIRECT_URL = reverse('account:login')

我不确定上述哪一种会有效,让我知道哪一种适合你。

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

https://stackoverflow.com/questions/59864943

复制
相关文章

相似问题

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