注册页面 写完了后现在就是写登录页面,有了注册页面的编写过程,登录页面的写法就更简单了,需要验证三个字段:登录名、密码、是否勾选。登录采用主要逻辑在forms表单中完成。登出很简单,只需要使用内置的logout方法就行。
一、用户登录
1. urls.py配置
users/urls.py
from django.urls import path
from users import views
app_name = "users"
urlpatterns = [
path("login/", views.LoginView.as_view(), name="login"),
]
2. views.py配置
users/views.py
import json
import logging
from django.views import View
from django.shortcuts import render
from users import models
from users.forms import RegisterForm, LoginForm
from utils.res_code.res_code import Code, error_map
from utils.res_code.json_function import to_json_data
logger = logging.getLogger("django")
class LoginView(View):
"""
# 1. 创建一个LoginView类
deal login logic
param: login_name、password、remember_me
"""
# 2. 创建一个get方法来跳转
def get(self, request):
return render(request, "users/login.html")
# 3. 创建一个post方法来处理主要逻辑
def post(self, request):
# 4. 接收前端传来的数据
try:
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR]) # 参数错误
# 5. 将数据转化为字典
dict_data = json.loads(json_data)
except Exception as e:
return to_json_data(errno=Code.UNKOWNERR, errmsg=error_map[Code.UNKOWNERR]) # 未知错误
# 6. 将数据和request传递给LoginForm表单进行验证
form = LoginForm(data=dict_data, request=request)
# 7. 数据校验成功返回数据给前端
if form.is_valid():
return to_json_data(errmsg="恭喜您登录成功")
else:
err_msg_list = []
for item in form.errors.values():
err_msg_list.append(item[0])
err_str = "/".join(err_msg_list)
return to_json_data(errno=Code.PARAMERR, errmsg=err_str)
3. forms.py配置
users/forms.py
# -*- coding: utf-8 -*-