Django

2024-11-05T10:02:47+08:00 | 1 minute read | Updated at 2024-11-05T10:02:47+08:00

@
Django

name: SY
signature: ‘@玥’
avatar: pAsGzR0.md.jpg date: 2024-11-05T11:30:00+08:00 tags:
- 编程笔记

参考链接

Python 后台开发面试题

Django celery的配置

这几个库让 Django Web 开发事半功倍

概念

# WSGI / uwsgi / uWSGI 这三个概念的区分。
(1) WSGI 是一种通信协议
(2) uwsgi 是一种线路协议而不是通信协议在此常用于在 uWSGI 服务器与其他网络服务器的数据通信
(3) uWSGI 是实现了 uwsgi 和 WSGI 两种协议的 Web 服务器

# Tornado
Tornado 和现在的主流 Web 服务器框架包括大多数 Python 的框架有着明显的区别它是非阻塞式服务器而且速度相当快得利于其非阻塞的方式和对 epoll 的运用Tornado 每秒可以处理数以千计的连接因此 Tornado 是实时 Web 服务的一个 理想框架

# RESTful 架构:
(1) 每个 URL 代表一种资源
(2) 客户端和服务器之间传递这种资源的某种表现层
(3) 客户端通过四个 http 动词对服务器资源进行操作实现表现层状态转换
- GET 表示获取资源POST 表示新建资源PUT 表示更新资源DELETE 表示删除资源HTTP 协议中最常用的就是这四种操作方式

knowledge

WSGI是Python在处理HTTP请求时规定的一种处理方式

# django生命周期
. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
. 客户端浏览器接收到返回的数据,经过渲染后显示给用户.

# FBV CBV
FBV和CBV本质是一样的基于函数的视图叫做FBV基于类的视图叫做CBV
在python中使用CBV的优点
- .提高了代码的复用性可以使用面向对象的技术比如Mixin多继承
- .可以用不同的函数针对不同的HTTP方法处理而不是通过很多if判断提高代码可读性

# cookie session
.cookie:
cookie是保存在浏览器端的键值对,可以用来做用户认证
.session
将用户的会话信息保存在服务端,key值是随机产生的字符串,value值是session的内容
依赖于cookie将每个用户的随机字符串保存到用户浏览器上
Django中session默认保存在数据库中django_session表
flask,session默认将加密的数据写在用户的cookie中

# django orm批量创建数据
objs=[models.Book(title="图书{}".format(i+15)) for i in range(100)]
models.Book.objects.bulk_create(objs)

# django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新
1.重写构造函数
def__init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")

2.利用ModelChoiceField字段,参数为queryset对象
authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())//多选

# django中csrf的实现机制
第一步django第一次响应来自某个客户端的请求时,后端随机产生一个token值把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面
第二步下次前端需要发起请求比如发帖的时候把这个token值加入到请求数据或者头信息中,一起传给后端Cookies:{csrftoken:xxxxx}
第三步后端校验前端请求带过来的token和SESSION里的token是否一致



---

Django notes.

© 2024

passion passion python !

Me

my name is ShiYue.

This is my blog website.