Django笔记(用户注册与登录)

 


用户注册

前端:

<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

猜你喜欢

转载自blog.csdn.net/ding_312/article/details/82187137