Django的用户登录和注册

能成功登录和注册并实现页面之间的跳转

前提:能成功安装基础的Django

创建应用并添加到项目中

python .\manage.py startapp user
在这里插入图片描述

创建存放模板的目录并添加到项目中

在这里插入图片描述

欢迎界面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>陈十一yi的主页</title>
</head>

<body>
    <h1>欢迎登录</h1>
    <h3>您好!欢迎您,{{name}}</h3>


</body>
</html>

用户登录界面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>陈十一yi-用户登录</title>
</head>

<body>
    <form method="POST" action="/login/">
        {%csrf_token%} 
        用户名:<input type="text" name="username" /><br/> <br/>&nbsp;&nbsp;码:<input type="password" name="password" /><br/>
        <button type="submit">登录</button>&nbsp;&nbsp;&nbsp;&nbsp;<a href="/reg/">注册新用户</a>
        {{ msg }}
    </form>
</body>

</html>

注册界面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>用户注册</title>
</head>

<body>
    <form method="POST" action="/reg/">
        {%csrf_token%} 
        用户名:<input type="text" name="username" /><br/>&nbsp;&nbsp;码:<input type="password" name="password" /><br/>&nbsp;&nbsp;箱:<input type="text" name="email" /><br/>
        <button type="submit">注册</button> {{ msg }}
    </form>
</body>

</html>

定义视图

在这里插入图片描述
在这里插入图片描述

from django.shortcuts import render,redirect
from django.contrib.auth.models import User
from django.contrib.auth import login,logout,authenticate
# Create your views here.
#登录
def loginView(request):
    if request.method=="POST":
        username=request.POST.get("username")
        password=request.POST.get("password")
        if User.objects.filter(username=username):
            user=authenticate(username=username,password=password)
            if user:
                if user.is_active:
                    login(request,user)
                    # msg="登录成功"
                    request.session['status']=True
                    request.session['uname']=username
                    request.session.set_expiry(300)
                   
                return redirect("/index/")
            else:       
                msg="用户名密码错误"
        else:
            msg="用户名不存在"
    return render(request,"login.html",locals())        

#注册
def regView(request):
    if request.method=="POST":
        username=request.POST.get("username")
        password=request.POST.get("password")
        email=request.POST.get("email")
        if User.objects.filter(username=username):
            msg="用户名已存在"
        else:
            user=User.objects.create_user(username=username,password=password,email=email)
            msg="注册成功"
            return redirect("/login/")
    return render(request,"register.html",locals())

##主页
def index(request):
    return  render (request,"index.html",{"name":request.session.get('uname')})

添加路由

在这里插入图片描述

from django.contrib import admin
from django.urls import path
from user.views import loginView,regView,index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',loginView),
    path('reg/',regView),
    path('index/',index),
]

验证

web登录127.0.0.1:8000/login用创建的用户没有点注册即可创建用户
在这里插入图片描述
在这里插入图片描述
注册新用户
在这里插入图片描述

在这里插入图片描述

登录新用户
在这里插入图片描述

在这里插入图片描述


版权声明:本文为weixin_46329906原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。