python django-user模型(登陆,注册,密码修改,注销)

时间:2022-12-08 19:02:21

<!DOCTYPE html>


<html lang="zh-cn">

<head>

   <meta charset="utf-8">

   <title>{{ title }}</title>

   <link rel="stylesheet" href="https://unpkg.com/mobi.css/dist/mobi.min.css">

</head>

<body>

<div class="flex-center">

   <div class="container">

   <div class="flex-center">

   <div class="unit-1-2 unit-1-on-mobile">

       <h1>MyDjango Auth</h1>

           {% if tips %}

       <div>{{ tips }}</div>

           {% endif %}

       <form class="form" action="" method="post">

           {% csrf_token %}

           <div>用户名:<input type="text" name='username'></div>

           <div>密 码:<input type="password" name='password'></div>

           {% if new_password %}

               <div>新密码:<input type="password" name='new_password'></div>

           {% endif %}

           <button type="submit" class="btn btn-primary btn-block">确定</button>

       </form>

       <div class="flex-left top-gap text-small">

           <div class="unit-2-3">

               <a href="{{ unit_2 }}">{{ unit_2_name }}</a>

           </div>

           <div class="unit-1-3 flex-right">

               <a href="{{ unit_1 }}">{{ unit_1_name }}</a>

           </div>

       </div>

   </div>

   </div>

   </div>

</div>

</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):
# 设置标题和另外两个URL链接
title = '登录'
unit_2 = '/user/register.html'
unit_2_name = '立即注册'
unit_1 = '/user/setpassword.html'
unit_1_name = '修改密码'
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)
return redirect('/')
else:
tips = '账号密码错误,请重新输入'
else:
tips = '用户不存在,请注册'
return render(request, 'user.html', locals())

# 用户注册

def registerView(request):
# 设置标题和另外两个URL链接
title = '注册'
unit_2 = '/user/login.html'
unit_2_name = '立即登录'
unit_1 = '/user/setpassword.html'
unit_1_name = '修改密码'
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
if User.objects.filter(username=username):
tips = '用户已存在'
else:
user = User.objects.create_user(username=username, password=password)
user.save()
tips = '注册成功,请登录'
return render(request, 'user.html', locals())

# 修改密码

# 修改密码
def setpasswordView(request):
# 设置标题和另外两个URL链接
title = '修改密码'
unit_2 = '/user/login.html'
unit_2_name = '立即登录'
unit_1 = '/user/register.html'
unit_1_name = '立即注册'
new_password = True
if request.method == 'POST':
username = request.POST.get('username', '')
old_password = request.POST.get('password', '')
new_password = request.POST.get('new_password', '')
if User.objects.filter(username=username):
user = authenticate(username=username,password=old_password)
# 判断用户的账号密码是否正确
if user:
user.set_password(new_password)
user.save()
tips = '密码修改成功'
else:
tips = '原始密码不正确'
else:
tips = '用户不存在'
return render(request, 'user.html', locals())












用户注销,退出登录

# 用户注销,退出登录
def logoutView(request):
logout(request)
return redirect('/')