![](https://img-blog.csdnimg.cn/a05a881bb62e492caf7af690d18137a9.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python_django_杂谈
文章平均质量分 54
基于日常开发所整理的实用技术点
骑猪去兜风z1
python后端开发,如果你看见,一个正在写bug的,头发茂密的调包侠,正是在下
展开
-
user_agents解析
is_mobile: 是否手机 (iPhone、Android、Blackberry、Windows Phone等)is_pc: 是否传统桌面操作系统 (Windows、OS X、Linux)is_tablet: 是否平板 (iPad、Kindle、Nexus等)is_touch_capable: 是否有触摸功能。is_bot: 是否搜索引擎爬虫。判断手机、平板电脑、PC。原创 2023-06-19 20:28:24 · 301 阅读 · 0 评论 -
跨域问题详解/django-cors-headers/django-cors-headers源码
## 自定义中间件解决跨域问题---》以后其它框架都是这个原理---》django上有人做了### 配置文件配置中间件。原创 2023-06-19 16:35:09 · 1885 阅读 · 0 评论 -
CBV中加装饰器/Django的中间件/csrf跨站请求伪造(lnh25)
django默认提供的有几个中间件它还支持程序员自己定义中间件# 自定义中间件的步骤:1. 在项目名下或者应用名下新建一个任意名称的文件夹2. 在这个文件夹下面新建一个py文件3. 在这个py文件中,新建一个类,必须继承MiddlewareMixin4. 在你新建的这个类下面写哪几个方法:5. 一定要在配置文件的中间件里面注册你的中间件路径# 针对process_reqeust1. 执行顺序是按照配置文件中注册的顺序,从上往下依次执行。原创 2023-05-06 14:35:29 · 70 阅读 · 0 评论 -
cookie和session的简单介绍(lnh25)
介绍一些背景信息"""1. 网站它是不用保存用户的信息,最早期的时候,网站都是一些静态网站eg:新闻网站 博客2. 随着技术发展,诞生了很多需要登录的网站eg: 淘宝 京东 支付宝...登录:解决了在网站中,网站可以识别出你是谁以登录为例,当用户第一次登录网站的时候,用户输入用户名和密码,如果不保存下来,拿用户就每次都需要登录,意味着每次都要输入用户名和密码、针对以上的问题,如何解决的嫩?原创 2023-05-06 14:23:21 · 386 阅读 · 0 评论 -
聚合/分组/Q/F/事务/orm常见字段及属性/自定义orm字段(lnh25)
"""自定义的char类型的字段类""""""限定生成数据库表的字段类型为char,长度为max_length指定的值"""# 使用自定义的char类型的字段。原创 2023-04-27 15:02:38 · 132 阅读 · 1 评论 -
form表单(action路径问题)
【代码】form表单(action路径问题)原创 2023-04-17 15:17:04 · 1002 阅读 · 1 评论 -
SimpleJwt---‘str‘ object has no attribute ‘decode‘
SimpleJwt---'str' object has no attribute 'decode'原创 2022-11-05 17:55:45 · 1280 阅读 · 0 评论 -
过滤器,simple_tag,inclusion_tag,模板继承
在已经注册的app下创建一个python包,包的名字为 templatetags;(包名必须叫这个)在templatetags包中创建py文件,文件可以自定义不起名称,默认是函数名在已经注册的app下创建一个python包,包的名字为 templatetags;(包名必须叫这个)在templatetags包中创建py文件,文件可以自定义不起名称,默认是函数名在已经注册的app下创建一个python包,包的名字为 templatetags;(包名必须叫这个)原创 2022-09-20 15:15:27 · 494 阅读 · 2 评论 -
URL的设计与配置
Django URL提供了两种匹配方式传递参数: path和re_path。path是正常参数传递,re_path是采用正则表达式regex匹配。转载 2022-09-20 13:38:15 · 977 阅读 · 0 评论 -
django通用视图(CBV)
DetailView用来展示一个具体对象的详细信息。它需要URL提供访问某个对象的具体参数(如pk, slug值)。你同样可以通过重写queryset, template_name和context_object_name来完成DetailView的自定义。你还可以通过重写get_context_data方法传递额外的参数或内容。如果你指定了queryset, 那么返回的object是queryset.get(pk = id), 而不是model.objects.get(pk = id)。转载 2022-09-20 13:32:03 · 992 阅读 · 0 评论 -
orm双下滑线
1. in 对应于 MySQL 中的 in 操作,可以接受数组、元组等类型数据作为参数2. 字符串也可以作为参数,但是转义后的 SQL 的意思不太一样3. in 操作也可以用于子查询动态的获取列表信息:4. 没有指定字段,所以是默认搜索 id 的值# 关键字:__range=[]# 关键字:__contain='' 区分大小写__icontain='' 不区分大小写以什么开始:startswith,istartswith,以什么结尾:endswith, iendswith,原创 2022-09-20 13:01:44 · 200 阅读 · 1 评论 -
条件表达式搜索、更新等操作
我们先来说一下需求,我们在获取 Client 数据的时候,想要知道这条数据 registered_on 日期字段所在的季节,比如 1月就是 Spring,7月就是 Autumn。在上面的代码中,我们通过 annotate() 来新建一个 season 字段,这个字段的值是根据 registered_on 的月份所在区间来为 season 赋值。在每一个 When() 函数里,前一个是个表达式,可以是这种形式,也可以是 Q() 操作的语句,then= 表示如果满足前面的表达式,那么值的内容将会是后面的值。转载 2022-09-20 12:28:42 · 185 阅读 · 0 评论 -
数据库函数比较和转换函数
Cast 的作用,我们可以将其理解成转换数据类型,比如在 Author 中,age 字段是一个 Integer 数据。但是如果我们想要获取数据的时候想要将其直接变成浮点型数据,就可以使用 Cast() 函数,通过 output_field=FloatField() 参数来指定输出类型。Coalesce 的单词的含义是 合并、联合,但是在这里函数表现出的意义是,优先取值。转载 2022-09-20 10:40:23 · 272 阅读 · 0 评论 -
数据库函数之日期函数
这个函数接受日期时间字段名称,和查询的年、月、日、时、分、秒等作为参数,提取出相应的值以整数类型返回日期类型字段包括:DateTimeField,DateField,TimeField提取的类型列举如下:year——年份quarter——季度month——月份day——某日week——周数,一年的第几周weekday——周几,周日的值是1,周一是2,一直到周六是7hour——小时minute——分钟second——秒数。转载 2022-09-20 15:15:59 · 2828 阅读 · 1 评论 -
数据库函数之数学公式函数
乘方,Power(‘x’, ‘y’) 相当于 x ** y。和绝对值一样,可以在取数和过滤的时候使用。取模,也就是取余,两个数相除之后的余数。向下取整,使用方法同向上取整。其效果等效于 x % y。转载 2022-09-20 10:15:51 · 380 阅读 · 0 评论 -
django使用原生SQL查询数据库
django提供了两种方式来执行原生 SQL 代码。一种是使用 raw() 函数,一种是 使用 connection.cursor()自定义返回字段自定义字段必须包含主键自定义返回新字段传递变量2、connection.cursor()注意适配fetch的数据返回数据 我们使用的是上下文管理器的方式来获取游标:其他获取游标多数据库操作转载 2022-09-20 10:09:54 · 1338 阅读 · 0 评论 -
orm--->defer和only
defer 的英语单词的意思是延迟、推迟,我们可以通过将字段作为参数传入,可以达到在获取数据的时候指定不获取该字段数据,常用于一些 textfield 字段上。only() 的意思是只获取指定的字段 2.3 defer 多字段2.4 主键字段不能defer2.5 关联外键数据,外键数据不应该被 defer2.6 访问被 defer 的字段3. only3.1 介绍3.2 多个 only 连用转载 2022-09-20 09:51:59 · 191 阅读 · 0 评论 -
数据库函数之文本函数
在示例中,我们将 name 字段和 alias 字段以及 _ 这个字符串用 Value() 函数修饰,传入 Concat(),并通过 output_field 来指定输出字符串类型,将三者合并成一个字符串返回。如果需要填充的值短了,那么就会重复填充,如果长了,就会被截取填充,在刚刚的例子里,第二次填充的时候,再重复一次 abc 则超出 10个长度的限制,所以 abc 被截取了。注意一下,我在示例中使用到的 id 的值都是在我自己数据库的 id值,读者在自己测试的时候,需要替换成自己数据的真实 id。转载 2022-09-19 23:26:36 · 257 阅读 · 0 评论 -
HttpResponse
username = request.session.get('name', '游客')session:所有的数据存储在服务端,在客户端用cookie存储session_id。request.session.set_expiry(10) 设置为10秒后过期。# request.session.clear() # 方法2。request.session.flush() # 方法3。logout(request) # 方法1,推荐。http协议是无状态的,每次请求都是一次新的请求,它不记得之前的请求。转载 2022-09-19 21:50:55 · 1488 阅读 · 1 评论 -
orm查询优化
其次,查询并不能保证只返回一个对象,如果匹配上来多个对象,且从数据库中检索并返回数百数千条记录,后果会很严重,其实就会报错,get() 能接受的返回只能是一个实例数据。1. 在大多数查询中,使用 filter() 和 exclude() 在数据库中做过滤,而不是在获取所有数据之后在 Python 里的 for 循环里筛选数据。如果想要获取总数,使用 count() 方法,而不是使用 len() 来操作,如果数据有一万条,len() 操作会导致这一万条数据都加载到内存里,然后计数。原创 2022-09-19 17:08:53 · 728 阅读 · 0 评论 -
django全局上下文处理器Context Processors
接下来我们来看一个具体例子。我们需要向所有模板传递一个叫site_name的全局变量以便在所有模板中直接使用 {{ site_name }}输出站点名称,我们可以在blog(应用名)的目录下新建context_processors.py,转载 2022-09-19 12:32:16 · 370 阅读 · 0 评论 -
django实现邮箱发送
再使用之前,先确定你要使用的邮箱是什么邮箱,是qq的还是163的还是其他,一般需要到相对应的有相中找到授权码,一般是不支持直接使用邮箱密码的,授权码用来替代密码。在者就是这里使用的是SMTP协议来进行发件,因此需要开启邮箱的相对应的服务。授权码和SMTP服务开启如下图:原创 2022-09-19 10:50:14 · 603 阅读 · 0 评论 -
django的settings配置详解
默认值:os.path.dirname(os.path.dirname(os.path.abspath(__file__)))。这个是Django项目文件夹所在目录得绝对路径DEBUG默认值是True。在本地开发测试环境下设置DEBUG=True可以显示bug信息,便于开发者找出代码错误所在。当你在部署项目在生产环境时,请切记设置DEBUG=False。因为生成环境下打开Debug会暴露很多敏感设置信息(比如数据库密码)。原创 2022-09-18 19:37:40 · 3183 阅读 · 1 评论 -
request常用属性
request常用属性。原创 2022-09-18 16:14:35 · 660 阅读 · 1 评论 -
django中Models常用的字段及属性介绍
django中Models常用的字段及属性介绍原创 2022-09-18 14:39:43 · 1014 阅读 · 2 评论 -
mysql在django中开启事务,实现悲观锁和乐观锁
-并发控制:当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。--没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。--常说的多个--无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。原创 2022-09-17 18:17:39 · 3158 阅读 · 52 评论 -
django的update和create高级操作
这个函数的返回值有两个,一个是操作的 model 实例,一个是是否是 created 的 布尔型数据model 除了name,这个字段,还有其他的字段,创建数据的时候,给不在查询条件内的字段,设置的默认值查询的条件必须是唯一的,否则会造成多条数据返回而报错,这个逻辑同 get() 函数。使用的字段,没有唯一的约束,并发的调用这个方法可能会导致多条相同的值插入。存在的字段话,更新default字段内的内容·,不存在的话,就创建该数据。原创 2022-09-16 21:18:07 · 5319 阅读 · 0 评论 -
利用django实现文件下载
利用django实现文件下载(待整理)原创 2022-09-06 22:52:51 · 1535 阅读 · 2 评论 -
djnago---外键的一些操作
外键的一些操作原创 2022-02-09 22:46:05 · 3024 阅读 · 0 评论 -
django--->自定义表名,建立索引
1. 使用索引可快速访问数据库表中的特定信息。2. 数据库索引好比是一本书前面的目录,没有索引目录的话,你访问书中某个页面需要从第一页遍历到最后一页,如果有目录,你可以快速地根据目录查找到所需要的页面。3. Django项目中如果你需要频繁地对数据表中的某些字段(如title)使用filter(), exclude()和order_by()方法进行查询,我们强烈建议你对这些字段建议索引(index), 提升查询效率。联合索引的优势。原创 2022-09-05 22:51:47 · 1470 阅读 · 2 评论 -
aggregate和annotate方法使用
aggregate:聚合annotate:分组Django的aggregate和annotate方法属于高级查询方法,主要用于组合查询。当我们需要对查询集(queryset)的某些字段,进行计算,或进行先分组,再计算或排序, 我们就需要使用aggregate和annotate方法了。一般搭配聚合函数进行使用。原创 2022-09-05 20:49:19 · 617 阅读 · 1 评论 -
select_related和prefetch_related的用法与区别
将会根据外键关系(注意: 仅限单对单和单对多关系),在执行查询语句的时候通过创建一条包含SQL inner join操作的SELECT语句来一次性获得主对象及相关对象的信息对于多对多字段,你不能使用select_related方法,这样做是为了避免对多对多字段执行JOIN操作从而造成最后的表非常大。Django提供了prefect_related方法来解决这个问题。prefect_related可用于多对多关系字段,也可用于反向外键关系(related_name)。都作用于queryset对象上面。原创 2022-09-05 04:00:00 · 4079 阅读 · 73 评论 -
django-debug-toolbar的安装
Django Debug Toolbar是Django开发中必备利器,可以帮助开发者快速了解项目的整体信息以及每个页面包括sql信息,http相关信息。django版本必须大于等于2.2才可以使用。原创 2022-09-04 22:18:05 · 651 阅读 · 2 评论 -
django中Meta用法
ordering = ["id"]原创 2022-08-26 10:35:10 · 2060 阅读 · 0 评论 -
django的信号signals详解
django的信号signals详解原创 2022-08-25 20:29:08 · 3564 阅读 · 0 评论 -
orm---get_or_create
1. 使用# 使用方式user, buer = User.objects.get_or_create(name="dbj", defaults={'address':'xxx'})# 等同于users = User.objects.filter(name="dbj").first()if not user: user = User.objects.create(name="dbj", address="xxx")2.参数介绍get_or_create,查询或者创建一条数据,首原创 2022-05-06 15:52:21 · 3691 阅读 · 0 评论 -
django---中间件
为请求/响应循环提供了几种安全改进# 开启会话支持# 基于APPEND_SLASH和PREPEND_WWW的设置来重写URL# 如果APPEND_SLASH设为True,并且初始URL 没有以斜线结尾以及在URLconf 中没找到对应定义,这时形成一个斜线结尾的新URL# 添加跨站点请求伪造的保护,通过向POST表单添加一个隐藏的表单字段,并检查请求中是否有正确的值# 向每个接收到的user对象添加HttpRequest属性,表示当前登录的用户。原创 2022-04-11 09:34:52 · 3737 阅读 · 1 评论 -
django---inclusion_tag使用
1. 创建一个 templatetags文件夹(一定叫这个)2. 在里面创建一个py文件(名字随便起) 比如 project3. 在py文件中书写代码from django.template import Libraryfrom web import modelsfrom django.urls import reverseregister = Library()@register.inclusion_tag('inclusion/all_project_list.html')原创 2022-03-11 15:59:15 · 3445 阅读 · 2 评论 -
django---include
1. namespace与name的区别# app01 namespacefrom django.conf.urls import url, includefrom app01 import viewsurlpatterns = [ # app01 url(r'^app01/', include('app01.urls', namespace='app01')), # app01:register 反向解析时候加上 app: ] # 路由分发 nam.原创 2022-03-11 15:54:09 · 4677 阅读 · 0 评论 -
django---数据库迁移原则
原创 2022-03-10 08:51:40 · 3155 阅读 · 0 评论