首页 > 解决方案 > 为什么 Django LoginView 登录不起作用?

问题描述

我使用 Django 就绪的 LoginVew 类制作了一个登录表单,但不知道为什么它不起作用。这是代码

视图.py

from django.shortcuts import render, redirect
from django.contrib.auth import views as auth_views
from django.contrib.auth.forms import AuthenticationForm


def main(request):
    if request.method == 'POST':
        loginform = auth_views.LoginView.as_view(template_name='main/index.html')
        loginform(request)
        return redirect('signup')
    loginform = AuthenticationForm(request)

    return render(request, 'main/index.html', {'loginform': loginform})

网址.py

from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.main, name='main'),
    path('signup/', include('signup.urls')),
    path('admin/', admin.site.urls),
]

HTML

<div class="log-outside">
    <div class="log-inside">
        {% csrf_token %}
        {{ loginform }}
        <button type="subbmit">Log in</button>
    </div>
</div>

标签: pythondjango

解决方案


如果您想更改template_nameLoginView最简单的方法是更改urls.py​​:

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(
        template_name='main/index.html',
    ), name='login'),
]

您可以使用文件中的以下设置settings.py来重定向未登录的用户。

LOGIN_REDIRECT_URL = 'Dashboard:index'
LOGIN_URL = 'Account:login'
LOGOUT_REDIRECT_URL = 'Account:login'

推荐阅读