网站建设改手机号,深圳制作公司网页,中国核工业第二二建设有限公司地址,wordpress page style文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 … 文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 补充哈希算法 功能 Django搭建的在线云笔记项目 支持如下功能
用户登录、注册登录用户的笔记创建、展示页面登录状态检测登陆状态【免登录】设置扩展-- 删除、更改【没写】
源码GitHub云笔记小项目
资源Django框架练习之云笔记项目
建议大家多使用git练习从GitHub上下载资源
整体架构流程 搭建平台环境
基于pycharm社区版本搭建 有的可能命令行使用python3y语句有效果 我的是python 看个人 # 命令行创建
1. 创建项目 django-admin startproject tedu_note
2. 创建应用 python manage.py startapp user # 【注意 python3 manage.py startapp user 可能没有效果】
3. 创建数据库tedu_note # [Navicat直接登录手动创建]4. 配置settings.py 5. 启动项目 python manage.py runserver 【注意 python3 manage.py runserver没有效果】 子功能
先创建用户表 并同步到数据库 创建用户表
class User(models.Model):username models.CharField(verbose_name用户名,max_length30,uniqueTrue)password models.CharField(密码,max_length32)created_time models.DateTimeField(创建时间,auto_now_add True) # 第一次被创建时自动设置为当前日期和时间updated_time models.DateTimeField(更新时间,auto_now True) # 在模型的任何 save() 操作时自动设置为当前日期和时间def __str__(self): # 影响输出格式return username %s % (self.username)同步数据库 使用的是python 不是python3 python manage.py makemigrations python manage.py migrate 1.用户注册 views.py
# views.py文件中的视图函数
def reg_view(request):#注册if request.method GET:# GET 返回页面return render(request,user/register.html)elif request.method POST:username request.POST[username]pass1 request.POST[password_1]pass2 request.POST[password_2]# POST 处理提交数据# 1. 密码一致if pass1 ! pass2:return HttpResponse(两次输入密码不一致)# 2.当前用户名是否可用 检查是否注册old_user User.objects.filter(usernameusername)if old_user:return HttpResponse(用户名已注册)# 插入数据 【明文处理】User.objects.create(usernameusername,password pass1)return HttpResponse(注册成功)上述代码问题 明文密码如何处理 多用户同时并行插入问题 产品经理要求注册则免登陆一天这功能怎么做
密码存储 – 哈希算法
直接使用明文密码的潜在风险 需要加密
def reg_view(request):#注册if request.method GET:# GET 返回页面return render(request,user/register.html)elif request.method POST:username request.POST[username]pass1 request.POST[password_1]pass2 request.POST[password_2]# POST 处理提交数据# 1. 密码一致if pass1 ! pass2:return HttpResponse(两次输入密码不一致)# 哈希算法 - 给定明文 计算出一段定长的 不可逆的值 md5 sha-256# 特点# 1. 定长输出 不管明文输入长度多少 哈希值定长 md5 - 32位 16进制 【解释密码设置32】# 2. 不可逆 无法反向计算出 对应 的 明文# 3. 雪崩效应 输入改变 输出改变# 场景 1.密码处理 2.文件的完整性校验# 如何使用 方法调用m hashlib.md5()m.update(pass1.encode()) # encode()变成字节串pass1_hash m.hexdigest() # 生成哈希值# 2.当前用户名是否可用 检查是否注册old_user User.objects.filter(usernameusername)if old_user:return HttpResponse(用户名已注册)# 插入数据 【明文处理】User.objects.create(usernameusername,passwordpass1_hash)return HttpResponse(注册成功)唯一索引引发的重复问题 try 请求量大 User.objects.create 会报错 在username该字段 因为是唯一字段 可能由于并发注册问题 发生重复写入问题 对于这类问题 善于用try解决 try :User.objects.create(usernameusername,passwordpass1_hash)
except Exception as e:# 由于唯一索引 报错 重复插入 【唯一索引注意并发写入问题】print(--create user error %s % (e))return HttpResponse(用户名已注册)登陆状态保持 – 详细看用户登录状态
# 免登录一天 session 用户名 主键 存入 session
request.session[username] username
request.session[uid] user.id
# TODO 修改session存储时间为1天 settings.py
# SESSION_COOKIE_AGE 86400 # 1天 24小时 * 60分钟 * 60秒 86400秒settings.py设置一天时间
2. 用户登录 def login_view(request):if request.method GET:# GET 返回页面return render(request,user/login.html)elif request.method POST:# 获得数据username request.POST[username]password request.POST[password]# 查询 是否有此人# username 是唯一索引try:user User.objects.get(usernameusername) # 找不到 肯定没有except Exception as e:print(--login user error %s % (e))return HttpResponse(用户名或者密码错误)# 比对密码 因为哈希不可逆 所以从新生成哈希 用哈希数值进行比对m hashlib.md5()m.update(password.encode())if m.hexdigest() ! user.password:return HttpResponse(用户名或密码错误)# 记录会话状态# 免登录一天 session 用户名 主键 存入 sessionrequest.POST[username] usernamerequest.POST[uid] user.idreturn HttpResponse(登录成功)会话状态时间 cookie 1 记住用户名 免登录三天
# 判断有没有✔ 通过检查浏览器响应分析 checkbox的状态 rememberon
# #点选了-Cookies存储username,uid时间3天
resp HttpResponse(--------success---------)
if remember in request.POST:resp.set_cookie(username, username, 3600 * 24 * 3)resp.set_cookie(uid, user.id, 3600 * 24 * 3)return resp13号写的程序 2. 不记住 一天 就是session
用户登录状态校验 3. 网站首页 4.退出登录 5.笔记模块 列表页 添加笔记 补充
哈希算法
import hashlib
m hashlib.md5()
m.update(b明文) # 必须字节b串
m.hexdigest() # hexdigest 理解为16紧进制摘要# 若要想要计算新的数值
# 从新这样生成
m hashlib.md5()
m.update(b明文) # 必须字节b串
m.hexdigest() # hexdigest 理解为16紧进制摘要# 若是直接update 相当于两次明文的拼接 文章转载自: http://www.morning.wqngt.cn.gov.cn.wqngt.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.kphsp.cn.gov.cn.kphsp.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn http://www.morning.bktzr.cn.gov.cn.bktzr.cn http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn http://www.morning.lbhck.cn.gov.cn.lbhck.cn http://www.morning.fkwp.cn.gov.cn.fkwp.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.pzcjq.cn.gov.cn.pzcjq.cn http://www.morning.jjhng.cn.gov.cn.jjhng.cn http://www.morning.zrnph.cn.gov.cn.zrnph.cn http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn http://www.morning.lgsfb.cn.gov.cn.lgsfb.cn http://www.morning.twhgn.cn.gov.cn.twhgn.cn http://www.morning.bxyzr.cn.gov.cn.bxyzr.cn http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn http://www.morning.lveyue.com.gov.cn.lveyue.com http://www.morning.qlbmc.cn.gov.cn.qlbmc.cn http://www.morning.cflxx.cn.gov.cn.cflxx.cn http://www.morning.nrddx.com.gov.cn.nrddx.com http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.fmswb.cn.gov.cn.fmswb.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.tldhq.cn.gov.cn.tldhq.cn http://www.morning.qyllw.cn.gov.cn.qyllw.cn http://www.morning.coatingonline.com.cn.gov.cn.coatingonline.com.cn http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn http://www.morning.ghryk.cn.gov.cn.ghryk.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.zhqfn.cn.gov.cn.zhqfn.cn http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn http://www.morning.wsyst.cn.gov.cn.wsyst.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.kdpal.cn.gov.cn.kdpal.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.hmxb.cn.gov.cn.hmxb.cn http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn http://www.morning.knscf.cn.gov.cn.knscf.cn http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn http://www.morning.lthpr.cn.gov.cn.lthpr.cn http://www.morning.nxhjg.cn.gov.cn.nxhjg.cn http://www.morning.zlrsy.cn.gov.cn.zlrsy.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.crkhd.cn.gov.cn.crkhd.cn http://www.morning.jntcr.cn.gov.cn.jntcr.cn http://www.morning.zkbxx.cn.gov.cn.zkbxx.cn http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn http://www.morning.bdtpd.cn.gov.cn.bdtpd.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn http://www.morning.yrjfb.cn.gov.cn.yrjfb.cn http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn http://www.morning.tcfhs.cn.gov.cn.tcfhs.cn http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.fjscr.cn.gov.cn.fjscr.cn http://www.morning.kabaifu.com.gov.cn.kabaifu.com http://www.morning.mlckd.cn.gov.cn.mlckd.cn http://www.morning.ntyanze.com.gov.cn.ntyanze.com http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn http://www.morning.qkbwd.cn.gov.cn.qkbwd.cn http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn http://www.morning.xrhst.cn.gov.cn.xrhst.cn http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn