用户想要访问一个网页,首先要求注册账号,有了账号之后再去登录,才能访问网站的主页
register 注册
form 表单保存数据到用户表
密码要加密
login 登录
form 表单提交数据和数据库数据校验
先校验用户是否存在
存在:校验密码
密码正确:登录成功
密码不正确 跳转到login登录 密码错误
不存在 跳转到login
成功:index首页
失败:login
activate djangoPath
django-admin startproject OAProject
切到django项目下,执行命令:
python manage.py startapp OAUser
前面的好几篇博客中都详细介绍过这个操作,这里就简单说一下
发现这里是红叉,所以必须配置环境
models.py
python manage.py check django校验
python manage.py makemigrations 数据库语句生成
python manges.py migrate 数据库同步
views.py
urls.py
因为此时,除了html的文件都被我们移动到了static下面,所以此时的路径都得变,在html的开头加载上static
{% load static %}
类似于这样的也都要加上static标签
运行服务器:
register.html
前端界面同样要加载static, {% load static %}
其他路径变了的都加上{% static ' ' %}
表单的method是post,记得要写{% csrf_token %}
因为数据库只有三个字段,用户名,邮箱,密码,所以表单就写三个就行
views.py register
注册的时候,在前端输入密码,经过加密之后保存到数据库中
import hashlib
def setPassword(password):
"""
加密密码,算法单次md5
:param apssword: 传入的密码
:return: 加密后的密码
"""
md5 = hashlib.md5()
md5.update(password.encode())
password = md5.hexdigest()
return str(password)
from django.shortcuts import render
from OAUser.models import OAUser
from django.shortcuts import HttpResponseRedirect
def register(request):
if request.method=="POST" and request.POST:
data=request.POST
username=data.get("username")
email=data.get("email")
password=data.get("password")
OAUser.objects.create(
username=username,
email=email,
password=setPassword(password),
)
return HttpResponseRedirect('/login/')
return render(request,"register.html")
urls.py
path('register/',register),
path('login/',login),
启动服务器:
login.html
前端界面同样要加载static, {% load static %}
其他路径变了的都加上{% static ' ' %}
表单的method是post,记得要写{% csrf_token %}
views.py
def login(request):
if request.method == 'POST' and request.POST:
email = request.POST.get("email")
password = request.POST.get("password")
e = OAUser.objects.filter(email=email).first()
if e:
now_password = setPassword(password)
db_password = e.password
if now_password == db_password:
response = HttpResponseRedirect('/index/')
response.set_cookie("username", e.username)
return response
return render(request, "login.html")
urls.py
启动服务器运行
输入邮箱,密码,点击登录,如果邮箱,密码正确,就会进入登录
点击退出界面,就会进入登录界面
views.py
def logout(request):
response=HttpResponseRedirect('/login/')
response.delete_cookie("username")
return response
urls.py
12.限制登录,只有登录的用户才能访问网站主页
views.py
使用装饰器
def userValid(fun):
def inner(request,*args,**kwargs):
username=request.COOKIES.get("username")
if username:
return fun(request,*args,**kwargs)
else:
return HttpResponseRedirect('/login/')
return inner
@userValid
def index(request):
return render(request, "index.html")
启动服务器