慕课网-Django入门到进阶-更适合Python小白的系统课程-第7章Django中的用户权限的基本使用-7-3用户的创建登录注销验证(3)
第7章 Django 中的用户权限的基本使用
7-3 用户的创建登录注销验证(3)
1.在项目 user 下目录 templates,修改文件 regist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
<style>
#edit-area {
width: 35%;
margin: 0 auto;
margin-top: 100px;
}
input {
display: block;
width: 100%;
}
#submit,#reset {
width: 40px;
display: inline-block;
}
#reset {
float: right;
}
</style>
</head>
<body>
<form id="edit-area" action="{% url 'regist' %}" method="POST">
{% csrf_token %}
<input name="username" type="text" placeholder="用户名" />
<input name="password" type="password" placeholder="密码" />
<input name="check_password" type="password" placeholder="确认密码" />
<input id="submit" type="submit" value="提交" />
<input id="reset" type="reset" value="重置">
{{error}}
</form>
</body>
</html>
2.在项目 user 下目录 app,修改文件 views.py
#coding:utf-8
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect
from django.views import View
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
error = request.GET.get('error', '')
return render(request, self.TEMPLATE, {'error':error})
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
check_password = request.POST.get('check_password')
if password != check_password:
return redirect('/regist?error=密码不相同')
exists = User.objects.filter(username=username).exists()
if exists:
return redirect('/regist?error=该用户已存在')
# hash_password = make_password(password)
user = User.objects.create_user(
username=username,
password=password
)
user.save()
return redirect('/regist')
class Login(View):
TEMPLATE = 'login.html'
def get(self, request):
return render(request, self.TEMPLATE)
3.在项目 user 下目录 templates,新增文件 login.html
4.在项目 user 下目录 app,修改文件 views.py,添加类 Login
#coding:utf-8
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect
from django.views import View
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
error = request.GET.get('error', '')
return render(request, self.TEMPLATE, {'error':error})
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
check_password = request.POST.get('check_password')
if password != check_password:
return redirect('/regist?error=密码不相同')
exists = User.objects.filter(username=username).exists()
if exists:
return redirect('/regist?error=该用户已存在')
hash_password = make_password(password)
user = User.objects.create_user(
username=username,
password=hash_password
)
user.save()
return redirect('/regist')
class Login(View):
TEMPLATE = 'login.html'
def get(self, request):
return render(request, self.TEMPLATE)
5.在项目 user 下目录 app,修改文件 urls.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.urls import path
from .views import Regist, Login
urlpatterns = [
path('regist', Regist.as_view(), name='regist'),
path('login', Login.as_view(), name='login'),
]
6.在项目 user 下目录 app,修改文件 views.py,添加 reverse
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from django.shortcuts import render, redirect, reverse
from django.views import View
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
error = request.GET.get('error', '')
return render(request, self.TEMPLATE, {'error':error})
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
check_password = request.POST.get('check_password')
if password != check_password:
return redirect('/regist?error=密码不相同')
exists = User.objects.filter(username=username).exists()
if exists:
return redirect('/regist?error=该用户已存在')
hash_password = make_password(password)
user = User.objects.create_user(
username=username,
password=hash_password
)
user.save()
return redirect(reverse('login'))
class Login(View):
TEMPLATE = 'login.html'
def get(self, request):
return render(request, self.TEMPLATE)
7.在项目 user 下命令行窗口同步数据库
python manage.py makemigrations python manage.py migrate
8.在项目 user 下命令行窗口启动服务
python manage.py runserver
9.在命令行窗口进入数据库界面

posted on 2020-02-12 09:20 herisson_pan 阅读(4) 评论(0) 收藏 举报
浙公网安备 33010602011771号