一、基于sb-admin模板完成以下登录的逻辑
用户想要访问一个网页,首先要求注册账号,有了账号之后再去登录,才能访问网站的主页
1.先说以下用户注册的逻辑:
register 注册
form 表单保存数据到用户表
密码要加密
2.然后是登录界面
login 登录
form 表单提交数据和数据库数据校验
先校验用户是否存在
存在:校验密码
密码正确:登录成功
密码不正确 跳转到login登录 密码错误
不存在 跳转到login
成功:index首页
失败:login
二、实现的步骤
1、先打开你要创建的django项目,shift+右键 再此处打开命令窗口
2、激活ancanda环境
activate DjangoPath
3、创建django项目
django-admin startproject OAProject
4、创建app
切换到当前创建的项目目录下
python manage.py startapp OAProject
5、在pycharm中打开django项目,配置环境
6.新建文件,搭好项目结构
7.数据库建模
models.py
8.settings.py配置
配置id
配置app
配置templates路径
配置语言,时区
配置state路径
9.数据库同步
方式一:
python manage.py check django校验
python manage.py makemigrations 数据库语句生成
python manges.py migrate 数据库同步
方式二:
10.测试一下index.html网站主页
views.py
urls.py
因为此时,除了html的文件都被我们移动到了static下面,所以此时的路径都得变,在html的开头加载上static
{% load static %}
类似于这样的也都要加上static标签
运行服务器:
11.注册界面
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
```python
path('register/',register),
path('login/',login),
启动服务器:
12.登录界面 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
启动服务器运行
输入邮箱,密码,点击登录,如果邮箱,密码正确,就会进入登录
13.登出界面(退出登录)logout
点击退出界面,就会进入登录界面
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")
启动服务器