当前位置: 首页 > news >正文

django-项目

一、RESTful设计风格

基础概念

全称:Representational State Transfer

1.资源

        网络上的一个实体,每个资源都有一个独一无二的URL与之对应;获取资源-直接访问URL即可

2.表现层

资源的表现形式    如HTML、xml、JPG、json等

3.状态转化

访问一个URL即发生一次客户端和服务端得交互;此次交互将会涉及到数据和状态得变化

客户端需要通过某些方式接触具体得变化    如GET、POST、PUT、PATCH、DELETE

设计原则

1.协议    - http/https

2.域名

域名中体现出api字样

https://api.example.com/v1 或 https://example.org/api/.

3.版本

https://api.example.com/v1

 4.路径

路径中避免使用动词,资源用名词表示

5.HTTP动词语义

GET、POST、PUT、PATCH、DELETE

示例

6.巧用查询字符串

7.状态码

1)用HTTP响应码表达

2)自定义内部code进行响应

{’code‘:'00000','msg':'success','data':{}}

二、用户系统 - ORM

model

class UserProfile(models.Model):username=models.BigAutoField(verbose_name="用户名",primary_key=True)nickname=models.CharField(max_length=20,verbose_name="昵称")password=models.CharField(max_length=32)email = models.EmailField()phone=models.CharField(max_length=11)avatar=models.ImageField(upload_to='avatar',null=True)sign=models.CharField(max_length=50,verbose_name="个人签名",default=default_sign)info=models.CharField(max_length=150,verbose_name="个人简介",default='')created_time=models.DateTimeField(auto_now_add=True)updated_time=models.DateTimeField(auto_now=True)class Meta:db_table = 'user_user_profile'

三、用户系统-注册

只处理后端

from models import UserProfile
import hashlib
# 数据校验 前后端都要做
class UserViews(APIView):def post(self,request):username = request.data['user']nickname = request.data['nick']email = request.data['email']password_1 = request.data['password_1']password_2 = request.data['password_2']phone = request.data['phone']# 参数基本检查if password_1 != password_2:return Response("密码不一致")# 用户名可不可用old_users = UserProfile.objects.filter(username=username)if old_users:return Response("用户名已被使用")# 插入数据(MD5)p_m = hashlib.md5()p_m.update(password_1.encode())UserProfile.objects.create(username=username,nickname=username,password=p_m.hexdigest(),email=email,phone=phone)return Response("注册成功")

四、用户系统-登录

views

class LoginViews(APIView):def post(self,request):username = request.data['user']password = request.data['psd']user_info = UserProfile.objects.filter(username=username)if not user_info:return Response("用户不存在")p_m = hashlib.md5()p_m.update(password.encode())if p_m.hexdigest() != user_info.first().password:return Response("密码不正确")return Response("登录成功")

五、用户系统-jwt

http://www.lryc.cn/news/158474.html

相关文章:

  • 红日靶场五(vulnstack5)渗透分析
  • 掌握Gitflow的一些进阶用法
  • 算法随笔:各种经典最短路算法的简要比较总结
  • concrt140.dll怎么下载,concrt140.dll修复工具(修复精灵下载)一键修复问题
  • 自行实现字符串转浮点数函数atof()
  • Windows平台Fortran编程入门
  • 05-Mysql夺命三连问:什么是索引下推?什么是索引覆盖?什么是回表?【Java面试总结】
  • 晨启,MSP430开发板,51开发板,原理图,PCB图
  • Notepad++ 的安装及配置
  • ✔ ★算法基础笔记(Acwing)(一)—— 基础算法(20道题)【java版本】
  • 简单记录下gin中使用中间件记录操作日志
  • 基于Matlab利用IRM和RRTstar实现无人机路径规划(附上源码+数据+说明+报告+PPT)
  • uniapp使用@microsoft/signalr(报错“ReferenceError: require is not defined“)
  • CloudCompare 二次开发(9)——半径滤波
  • ElementUI浅尝辄止29:Breadcrumb 面包屑
  • ABB MPRC086444-005数字输入模块
  • stable diffusion实践操作-常见lora模型介绍
  • kubeadm 安装k8s
  • 选择最适合您的Bug管理软件:市场比较与推荐
  • Spring MVC的常用注解及用法
  • HTTP和HTTPS的区别、 HTTPS运行原理
  • 统计封闭岛屿的数目
  • 【数据结构与算法系列4】长度最小的子数组
  • 问道管理:底部渐渐抬高 今年反弹时刻或已来临
  • 正规黄金代理的三大要素
  • Spine2D骨骼动画播放器 - 微信小程序版
  • 蓝天转债,双良转债上市价格预测
  • python-爬虫-xpath方法-批量爬取王者皮肤图片
  • go锁--读写锁
  • Unity中Shader的屏幕坐标