python - 为什么 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>
解决方案
如果您想更改template_name
,LoginView
最简单的方法是更改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'
推荐阅读
- google-apps-script - 如何在谷歌表格中的单元格编辑上打印单元格范围?
- shell - 为什么卷曲 zip 文件需要 -L 作为命令行选项?
- python - Python Numpy:将数据从一维数组插入二维数组
- java - IntelliJ 中的 Java 模块并添加 require java.ws.rs 会出现奇怪的错误
- css - 伪元素的过渡背景
- c - 哪些 C 编译器支持 #pragma STDC FENV_ACCESS ON(或其等效项)?
- delphi - 如何使用 TVertScrollBox 的 OnViewportPositionChange
- python - Azure 函数不执行其他 Python 函数
- javascript - 在 plotly.js 中添加百分比符号来衡量指标
- java - 无法弄清楚为什么循环没有得到正确的总和