登陆路由
path('login/', views.Login.as_view(), name='login'), # 登陆
登陆视图
页面渲染,get请求
移下来
测试,页面的效果
样式的补齐
静态路径配好
主要用到的技术点
》在模板页导入静态的配置
{% load staticfiles %}
》利用静态配置拼接路径,例如
{% static 'css/reset.css' %}
》弄好后的效果
http://127.0.0.1:8000/user/login/
post请求开始
前端表单的相关修改和关注
post请求
关注控件的name值
post提交,需要加上csrf token
视图收数据
认证用户的登陆 1.x版本
直接使用django自带的认证体系
1.x版本的认证
用户认证2.x版本
在1.x的认证基础上,还需要在配置中加上一段代码
# 认证不自动关联数据库的is_active
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']
测试认证的效果
结果
登陆的细节处理
用户认证成功的情况
用户认证失败的情况
完整 的代码
# /user/login
class LoginView(View):
def get(self, request):
# 渲染页面
return render(request, "login.html")
def post(self, request):
# 用户登陆
# 1,接收数据
username = request.POST.get("username")
password = request.POST.get("password")
print(username)
print(password)
# 2,校验数据
from django.contrib.auth import authenticate
user = authenticate(username=username, password=password)
# 如果用户验证成功
if user is not None:
print('user, is active', user, user.is_active)
# 如果用户已激活
if user.is_active:
# 3,登陆逻辑
print('登陆用户')
from django.contrib.auth import login
login(request, user)
print('页面跳转')
return redirect(reverse("goods:index"))
# 用户未激活
else:
return render(request, "login.html", {"errmsg":"用户未激活"})
# 如果用户验证不成功
else:
return render(request, "login.html", {"errmsg": "用户名或者密码错误"})