<!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('/')