我正在尝试使用Django创建一个网站,我有几个视图需要登录。但是,我不知道如何对用户进行身份验证。我是一个非常新的网络开发(这是我的第一个项目),所以请问后续问题,如果我不清楚。以下是一些可能提供上下文的代码:
摘自rushsite/rush/视图.py地址:
from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
def login_user(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect('list')
else:
return render(request, "registration/login.html")
else:
return render(request, "registration/login.html")
我的登录.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="container">
<div class="top">
<h1 id="title" class="hidden"><span id="logo">Delta Sig<span> Recruitment</span></span></h1>
</div>
<div class="login-box animated fadeInUp">
<div class="box-header">
<h2>Log In</h2>
</div>
<form method="post">
{% csrf_token %}
<label for="username">Username</label>
<br/>
<input type="text" id="username">
<br/>
<label for="password">Password</label>
<br/>
<input type="password" id="password">
<br/>
<button type="submit">Sign In</button>
<br/>
<br/>
{% if request.META.HTTP_REFERER == "http://127.0.0.1:8000/login/" %} Incorrect username or password. {% endif %}
</form>
</div>
</div>
</body>
摘自rushsite/rush/型号.py地址:
from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator, MinValueValidator
class Brother(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
当我使用我知道有效的凭据在表单上单击submit时,user=None,所以它会直接将我重定向回登录页。我做错什么了?你知道吗
由于您对登录视图没有做任何奇怪的操作,因此应该使用django's pre-made authentication views。这避免了在重新发明车轮时可能出现的正常问题。你知道吗
它还包括一些额外的功能,比如使用django的表单,以及基于
?next=
GET参数成功登录时的重定向。你知道吗在这种情况下,需要^{} 。你知道吗
我还建议研究[django的内置表单(https://docs.djangoproject.com/en/2.0/topics/forms/)。如果您需要为此编写自己的视图,那么表单将有助于验证。它们可以simplify your template code,并将适当地显示验证错误。你知道吗
使用
LoginView
自动附带的表单,模板中的<form>
可以简化为:相关问题 更多 >
编程相关推荐