【Django】云笔记项目
一、介绍
- 用户可在系统中记录自己的笔记,用户的数据被存储在云笔记平台;
- 用户和用户之间的数据为隔离存储(登陆后才能使用相关笔记功能,且只能查阅自己的笔记)

二、功能拆解
1、用户模块
- 注册:成为平台用户
- 登录:校验用户身份
- 退出登录:推出登录状态
2、笔记模块
- 查看笔记列表 -查
- 创建新笔记 -增
- 修改笔记 -改
- 删除笔记 -删
3、功能需求
(一)注册、登录、首页
(1)用户注册


(2)注册优化

# 哈希算法 - 给定明文,计算出一段定长的、不可逆的值 md5、sha-256
# 1、定长输出:不管明文输入长度为多少,哈希值都是定长的。md5-32位16进制
# 2、不可逆:无法反向计算出对应的明文
# 3、雪崩效应:输入改变,输出必然变
# 场景:1、密码处理 2、文件完整性校验
m = md5()
m.update(b'123456')
result = m.hexdigest()
(3)用户登录

(4)会话状态时间拉长
无论有没有勾选“记住用户名”选项,都要保存session,但若勾选了此选项,就多保存一份cookie。即Session存短期、Cookie存长期。

if request.method == 'GET':# 检查登录状态,如果登录了,显示已登录if request.session.get('username') and request.session.get('uid'):return HttpResponse('已登录')# 检查Cookiesc_username = request.COOKIE.get('username')c_uid = request.COOKIE.get('uid')if c_username and c_uid:# 回写sessionrequest.session['username'] = c_usernamerequest.session['uid'] = c_uidreturn HttpResponse('已登录')return render(request,'user/login.html')
(5)首页

{% if request.session.username %}欢迎 {{ request.session.username }}<a href="">退出登录</a><a href="">进入笔记</a>{% else %}{% if request.COOKIES.username %}欢迎 {{ request.COOKIES.username }}<a href="">退出登录</a><a href="">进入笔记</a>{% else %}<a href="/user/login">登录</a><a href="/user/reg">注册</a>{% endif %}{% endif %}
(6)退出登录

(二)笔记
(1)检验登陆状态-装饰器
def check_login(fn): # fn即视图函数def wrap(request,*args,**kwrags): # 参数是视图函数的参数if 'username' not in request.session or 'uid' not in request.session:# 检查cookiec_username = request.COOKIES.get('username')c_uid = request.COOKIES.get('uid')if c_username and c_uid:request.session['username'] = c_usernamerequest.session['uid'] = c_uidelse:return HttpResponseRedirect('/user/login')return fn(request,*args,**kwrags)return wrap
后续的增删改查操作均需校验登录状态
(2)列表页

(3)添加笔记页

(4)修改笔记页

(5)删除笔记

三、流程
- 创建项目
django-admin startproject tedu_note - 配置常规项:语言、时区、禁用csrf、数据库配置
- 创建注册应用user和index、用户user模型类设计
- 完成登录、注册、首页的功能设计,详见二(一)
- 创建注册应用note、笔记Note模型类设计
- 完成笔记相关的功能设计,详见二(二)
相关文章:
【Django】云笔记项目
一、介绍 用户可在系统中记录自己的笔记,用户的数据被存储在云笔记平台;用户和用户之间的数据为隔离存储(登陆后才能使用相关笔记功能,且只能查阅自己的笔记) 二、功能拆解 1、用户模块 注册:成为平台…...
LeetCode——1797. 设计一个验证系统
一、题目 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同&am…...
java Resource
参看本文前 你要先了解 spring中的 Autowired和Qualifier 注解 如果之前没有接触过 可以查看我的文章 java spring 根据注解方式按(类型/名称)注入Bean 然后 创建一个java项目 引入spring注解方式 所需要的包 然后 在src下创建包 我们这里直接叫 Bean 在Bean下创建包 叫UserD…...
ArkTS语法(声明式UI)
页面级变量的状态管理 装饰器装饰内容说明State基本数据类型,类,数组修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。Prop基本数据类型修改后的状态数据用于在父组件和子组件之间建立单向数据依赖关系。修改父组件关联数据时,…...
自动化测试实战篇(7)jmeter连接mysql数据库,实现单表、多表、三表查询,并对表中数据进行修改,删除,新增操作
Jmeter也可以连接mysql数据库,通过JDBC去调用数据库内的参数到HTTP请求中进行接口测试,可以说是相当方便 自动化测试实战篇(7)jmeter连接mysql数据库,实现单表、多表、三表查询,并对表中数据进行修改&#…...
我的网站上线了!
最近有段时间没有写原创文章了,恰好这两天正在翻阅历史文章的时候,发现文章中的图片竟然裂了?顿时冒了一身冷汗,因为每逢遇到这种情况,动辄需要花费一周的时间迁移图片。。。。。。 当我直接访问图片 url 的时候&#…...
勒索病毒整体攻击态势简单分析
声明 本文是学习2018勒索病毒白皮书政企篇. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 勒索病毒整体攻击态势 2018年,勒索病毒攻击特点也发生了变化:2017年,勒索病毒由过去撒网式无差别攻击逐步转向以服务器定…...
Vue资源(组件库、实用插件)
文章目录 一、组件库如下1、Element-ui和Element-plus插件库(PC端👇🔗)2、Ant Design vue(👇🔗)3、Vant插件库(移动端👇🔗)二、插件库如下1、正确引入图片地址(👇🔗)2、Vuex状态存储(持久化persist👇🔗)3、Better-Scroll(移动端滚动条👇🔗)4、Vue和…...
java rpc框架 中的自定义异常类型的全局处理
– 这里的dubbo 可泛指 所有rpc框架 –比如自定义异常类型是MyEx, 以及myEx可以转化为MyResult – 需求: 凡是请求链路中抛出的MyEx需要自动及时或最终转化为 自定义的MyResult返回 – 1. spring 提供 controller端的全局异常捕获. 这一步简单 – 2. dubbo 需要 将MyEx 传输回来…...
面试题:Redis的内存策略
1 Redis内存回收Redis之所以性能强,主要原因是基于内存存储,然而单节点的Redis内存不易过大,会影响主从同步和持久化性能我们可以通过修改配置文件设置Redis的最大内存:当内存存储到上限时,就无法存储更多的数据了。1.…...
idea中使用Git
目录 一、在idea中配置Git 1、打开settings,搜索git,找到本地上的git安装目录,选择git.exe 2、本地git安装目录 二、获取Git 1、本地初始化仓库 2、选中项目这层目录,点击确定 2、从远程仓库克隆 三、本地仓库操作 1、将文…...
C++派生类指针赋值给基类指针问题(虚函数和非虚函数不同)
概念 上行转换:把派生类的指针或引用转换成基类表示,简单来说就是子类指向父类 下行转换:把基类指针或引用转换成派生类表示,简单来说就是父类指向子类 上行转换是安全的的,下行转换是不安全的(最好使用…...
数据库实践LAB大纲 04 触发器
游标 系统为用户开设的一个数据缓冲区 —— 存T-SQL语句从数据库检索出来的结果集 对结果集处理:结果集一条条提取记录,这时要用游标 使用 利用基于变量的select into语句,只能处理单条记录使用游标循环处理 声明游标: DECLA…...
Win10系统电脑开机后总是蓝屏无法使用怎么办?
Win10系统电脑开机后总是蓝屏无法使用怎么办?电脑开机的时候出现了蓝屏问题,这个情况是我们的电脑系统不兼容导致的。遇到这个问题一般是需要去进行系统的重装来解决,安装一个更兼容的系统就可以解决问题了。一起来看看详细的解决方法分享吧。…...
Node——使用nvm切换node版本
1. 下载mvn安装包 https://pan.baidu.com/s/1alfyRvwVWr_TrkN0A9Er5g?pwd1v7c 2. 安装后命令输入mvn -v 验证是否安装成功 3. mvn命令 nvm list available 显示可下载的版本nvm install [node版本号] 显示可下载的版本nvm uninstall [node版本号] 删除已安装的指定版本nvm…...
go语言实现的一个基于go-zero框架的微服务影院票务系统cinema-ticket
一个基于go-zero框架的微服务影院票务系统cinema-ticket 前言 项目基本介绍 项目开源地址:butane123/cinema-ticket: 一个基于go-zero框架的微服务影院票务系统cinema-ticket (github.com) 这是一个微服务影院票务系统,基于go-zero框架实现,…...
ArcGIS API for JavaScript 4.15系列(3)——Dojo中的css样式操作
1、前言 前一篇博客介绍了Dojo中基础的dom操作方法,主要是针对html中的常用标签和属性进行操作。而一个优秀的线上网站自然也离不开css样式的从旁辅助。在实际开发过程中,我们经常会遇到需要动态修改css样式的问题,本文就来介绍一下如何在Do…...
“赶快回家网”首页制作
“赶快回家网”首页制作一、实验名称:二、实验日期:三、实验目的:四、实验内容:五、实验步骤:六、实验结果:七、源程序:八、心得体会:一、实验名称: “赶快回家网”首页…...
JavaWEB-Servlet
目录 Servlet简介Servlet快速入门Servlet配置详解ServletContext 1 Servlet简介 Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码&a…...
springboot集成mqtt
引入jar包 <dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-mqtt</artifactId> </dependency> <dependency><groupId>com.alibaba</groupId><artifactId>fastjs…...
GB28181实战:Windows环境下WVP-GB28181部署全攻略
1. Windows环境下WVP-GB28181部署全攻略 如果你正在寻找一个在Windows系统上快速搭建GB28181视频监控平台的方法,那么WVP-GB28181绝对是个不错的选择。作为一个开源的视频监控平台,WVP-GB28181支持国标GB/T28181协议,能够帮助你轻松实现视频设…...
VS2022项目复制后报错打不开?别慌,手把手教你用记事本5分钟修复.sln文件
VS2022项目复制后报错打不开?记事本5分钟修复.sln文件全指南 刚复制完的VS2022项目一打开就报错?解决方案资源管理器一片空白?别急着重装或放弃,这很可能只是.sln文件中的路径需要手动更新。作为经历过数十次类似问题的开发者&…...
基于NLP的计算机毕业设计智能客服助手:从零搭建到性能优化实战
背景痛点:毕业设计智能客服的常见“坑” 很多计算机专业的同学在做毕业设计时,会选择智能客服助手这个方向,因为它既贴近实际应用,又能综合运用NLP、Web开发、数据库等多门课程知识。但真正动手后,常常会遇到几个让人…...
网络舆情分析毕业设计:从数据采集到情感识别的技术实现与避坑指南
最近在帮学弟学妹们看网络舆情分析相关的毕业设计,发现大家普遍在几个地方卡壳:要么爬虫被封IP,数据拿不到;要么文本预处理一团糟,模型效果差;要么整个系统耦合在一起,改一处动全身,…...
Chatbot Arena排行榜单实战指南:从数据采集到模型优化
Chatbot Arena排行榜单实战指南:从数据采集到模型优化 在构建和优化自己的对话AI时,我们常常面临一个核心问题:如何客观、全面地评估它的性能?闭门造车式的测试往往带有主观偏见,而Chatbot Arena这类公开的排行榜单&a…...
避坑指南:三自由度机械臂DH参数建模与逆解求解的那些‘坑’(从理论到Matlab/Python验证)
三自由度机械臂运动学建模实战:从DH参数陷阱到逆解验证 机械臂运动学建模是机器人学中最基础却最容易踩坑的领域之一。很多工程师和学生在理论学习阶段看似掌握了DH参数法和正逆运动学推导,但一旦动手实践,总会遇到各种"诡异"的问题…...
Mellanox ZTR技术解析:如何通过RTTCC实现零配置高性能RoCE网络
1. 什么是Mellanox ZTR技术? 第一次听说Mellanox ZTR(Zero Touch RoCE)技术时,我的反应和大多数人一样:"这又是什么高大上的黑科技?"但当我真正在金融交易系统里部署它之后,才发现这可…...
Wan2.2-I2V-A14B高性能实践:10核CPU+120GB内存协同优化视频推理稳定性
Wan2.2-I2V-A14B高性能实践:10核CPU120GB内存协同优化视频推理稳定性 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为高性能文生视频任务优化的私有部署镜像,针对RTX 4090D 24GB显存显卡和10核CPU120GB内存配置进行了深度优化。这个镜像解决了视频生…...
RWKV7-1.5B-g1a镜像优势解析:离线加载兼容+软链修复+日志分级排查设计
RWKV7-1.5B-g1a镜像优势解析:离线加载兼容软链修复日志分级排查设计 1. 平台简介与核心能力 rwkv7-1.5B-g1a是基于新一代RWKV-7架构的多语言文本生成模型,专为轻量级应用场景优化设计。该镜像经过工程化改造,在保持原模型优秀生成能力的同时…...
OpenClaw+GLM-4.7-Flash:3个提升开发效率的自动化脚本
OpenClawGLM-4.7-Flash:3个提升开发效率的自动化脚本 1. 为什么选择这个技术组合? 作为一名长期在终端里摸爬滚打的开发者,我一直在寻找能够真正融入日常工作的AI助手方案。直到遇到OpenClawGLM-4.7-Flash这个组合,才找到了理想…...
