用户注册
前端:
<form action="/dj04app/myregister" method="post" style="text-align: center">
<input type="text" placeholder="用户名" name="u_name">
<br>
<input type="password" placeholder="密码" name="pwd">
<br>
<input type="password" placeholder="确认密码" name="confirm_pwd">
<br>
<input type="submit" value="注册">
{% csrf_token %}
</form>
后端:
1.先判断是get请求还是post请求,get请求返回注册页面,post请求做判断
2.post请求下拿前端输入的参数
3.校验参数格式和对应的用户名字要求
4.判断用户是否被注册过
5.如果没被注册则创建一条用户数据
6.注册成功后跳转到登录页面
from django.contrib.auth.models import User
def register(req):
if req.method == "GET":
return render(req, "register.html")
else:
params = req.POST
u_name = params.get("u_name")
pwd = params.get("pwd")
confirm_pwd = params.get("confirm_pwd")
#判断用户输入是否满足以下基本条件
if u_name and len(u_name)>3 and pwd and confirm_pwd and pwd == confirm:
#判断用户名是否被注册过
exists_flag = User.objects.filter(username=u_name).exists
if exists_flag:
return HttpResponse("该用户已被注册")
else:
#创建用户 create_user 用来创建用户
User.objects.create_user(username=u_name,password=pwd)
return render(req, "my_login.html")
else:
return HttpResponse("账号或密码不正确")
用户登录
前端
<form action="/dj04app/myloginv1" style="text-align: center" method="post">
<input type="text" placeholder="账号" name="u_name">
<br>
<input type="password" placeholder="密码" name="pwd">
<br>
<input type="submit" value="确定">
{% csrf_token %}
后端
1.拿取参数(账号、密码)
2.校验数据格式
3.校验用户
user = authenticate(username-u_name, password=pwd)
4.校验通过会得到用户数据
5.登录用户
6.校验失败则提示用户信息错误
from django.contrib.auth import authenticate, login, logout
def my_login_v1(req):
if req.method == "GET":
return render(req, "my_login.html")
else:
#拿参数
params = req.POST
u_name = params.get("u_name")
pwd = params.get("pwd")
#校验数据格式
if u_name and len(u_name)>3 and pwd and len(pwd)>=3:
#校验用户
user = authenticate(username=u_name, password=pwd)
print(user)
if user:
#通过校验的用户 让其登录
login(req, user)
return rander(req, "new_index.html", {"u_name": username})
else:
#没通过的 返回错误
return HttpResponse("账号或密码错误")
else:
return HttpResponse("请补全信息")
登录之后的跳转页面
前端
欢迎{{ u_name }}
#反向解析
<a href="{% url 'dj04app:new_logout' %}">退出</a>
后端
def new_index(req):
#获取登录用户
user = req.user
return render(req, "new_index.html", {"u_name": user.username})
退出登录并跳回注册页面
后端
from django.contrib.auth import authenticate, login, logout
def new_logout(req):
#退出
logout(req)
#重定向到注册页面
response = HttpResponseRedirect("/dj04app/myregister")
#删除u_name 对应的cookies
response.delete_cookie("u_name")
return response