django做一个注册登录界面
一、基于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
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")
启动服务器
还没有评论,来说两句吧...