django
文章平均质量分 69
vv安的浅唱
致力于撰写每一篇跑通过实例的博客,更多文章信息可搜索关注【Hunter后端】
展开
-
Django笔记十二之defer和only
本篇笔记将介绍查询中的 defer 和 only 两个函数的用法,笔记目录如下:deferonly1、deferdefer 的英语单词的意思是 延迟、推迟,我们可以通过将字段作为参数传入,可以达到在获取数据的时候指定不获取该字段数据,常用于一些 textfield 字段上。假设我们有一个 TestModel,有一个字段名为 text_field,字段类型为 textfield,里面存了大量字符串数据.那么如果我们在获取这个 model 数据的时候,只想要这个 model 的其他字段信息, t原创 2022-03-18 23:13:21 · 1547 阅读 · 0 评论 -
Django笔记十一之外键查询优化select_related和prefetch_related
本篇笔记目录如下:select_relatedprefetch_related在介绍 select_related 和 prefetch_related 这两个函数前,我们先来看一个例子。对于,Entry 和 Blog 这两个 model,前面介绍过,Blog 是 Entry 的外键,如下:class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField()原创 2022-03-09 01:15:57 · 2363 阅读 · 0 评论 -
Django笔记十之取值指定字段及去重
这篇笔记将介绍 reverse、distinct、values 和 values_list 的用法。本篇笔记目录如下:reverse()values()values_list()distinct()using()1、reverse()对 QuerySet 返回的结果进行反转,使用方法如下:from blog.models import BlogBlog.objects.filter(id__gte=2).reverse()通过 reverse() 方法,可以使原本是某个顺序的数据原创 2022-02-27 12:58:15 · 5157 阅读 · 0 评论 -
Django笔记九之model查询相关介绍
在接下来四五篇笔记中,将介绍 model 查询方法的各个细节,为我们的查询操作提供各种便利。本篇笔记将介绍惰性查找、filter、exclude、annotate等方法,目录如下:惰性查找filterexcludeannotatealiasorder_by1、惰性查找前面我们在介绍 Django 增删改查的时候,提到过他的惰性查找的规则。也就是说普通的 filter 语句执行时,系统并不会去查询数据库,只有当我们真正使用里面的数据的时候,才会去查询数据库。那么以下介绍几种,使用的时原创 2022-02-24 23:13:36 · 1490 阅读 · 0 评论 -
Django笔记八之Meta参数的使用
前面介绍了 model 的字段属性,字段类型,这篇笔记介绍一下 model 的 Meta 选项。这个选项提供了一些参数,比如排序(ordering),表名(db_table)等。但这都不是必需的,都是作为可选项,主要是为使用者提供方便的、自定义的一些用法。以下是本次笔记的目录列表:db_tableget_latest_bymanagedordering1、db_table一般如果我们创建 model 的时候不指定表名,系统在 makemigration 和 migrate 的时候会默认原创 2022-02-18 22:45:07 · 1250 阅读 · 0 评论 -
Django笔记七之ManyToMany和OneToOne介绍
ManyToMany 是一种多对多的关系,在用途和使用方法上和外键 ForeignKey 类似。以下是本篇笔记的目录:ManyToMany 的介绍through 参数through_fields 参数ManyToMany关系数据的增删改查OneToOne介绍1、ManyToMany 的介绍假设有两个 model,Person 和 Group,这两个model之间是多对多的关系。那么我们可以如下创建其关系:# blog/models.pyclass Person(models.Mod原创 2022-02-12 15:35:12 · 2376 阅读 · 0 评论 -
Django笔记六之外键ForeignKey介绍
这一篇笔记介绍 Django 系统 model 的外键处理,ForeignKey 以及相应的处理方法。这是一种一对多的字段类型,表示两张表之间的关联关系。本篇笔记的目录如下:on_deleterelated_namerelated_query_name外键字段的保存1、on_delete假设有两个 application,app1 和 app2app1 下的 某个 model 为 App1app2 下的 某个 model 为 App2# app1/models.pyclass A原创 2022-02-10 01:01:21 · 4464 阅读 · 0 评论 -
Django笔记五之字段类型
这篇笔记介绍字段的类型 Field Type。Django 的model 下的 field 对应的是 MySQL 中的表字段,而我们定义的 field 的类型则对应 MySQL 中的字段类型。本次主要介绍以下几种:CharFieldIntegerFieldDateField/DateTimeFieldBooleanFieldFloatFieldTextFieldDecimalField其中,比较重要的 ForeignKey,ManyToMany,OneToOne 类型的我们单开笔记讲原创 2022-01-23 03:56:00 · 2309 阅读 · 0 评论 -
Django笔记三之使用model对数据库进行增删改查
本篇笔记目录索引如下:model 准备增查删改1、model 准备在上一篇笔记中,我们新建了一个 application,增加了几个model 同步到了数据库,这次我们新建一个名为 blog 的application,同步数据结构。大概分为以下几步:python3 manage.py startapp blog将 'blog.apps.BlogConfig’, 写入 settings.py INSTALLED_APPS更新 blog/models.pypython3 manag原创 2022-01-17 00:48:48 · 1567 阅读 · 0 评论 -
Django笔记二之连接数据库、执行migrate数据结构更改操作
本篇笔记目录索引如下:Django 连接mysql,执行数据库表结构迁移步骤介绍操作数据库,对数据进行简单操作接下来几篇笔记都会介绍和数据库相关,包括数据库的连接、操作(包括增删改查)、对应的字段类型、model 里Meta 相关参数和 QueryAPI 的详解等。这一篇先介绍数据库的连接和简单的增删改查操作。首先介绍一些 Django 的操作表的逻辑,Django 提供了一套非常方便的 orm 方法,可用于Django 能直接对表和数据进行增删改查,对应的数据库里每一张表都有一个对应的 mo原创 2022-01-11 22:15:50 · 1617 阅读 · 0 评论 -
Django笔记一之运行系统、创建视图并访问
从这一篇笔记开始将根据 Django 的官方文档,阅读整理之后,出一系列笔记教程,用作新手入门教程或者自己做查阅。此次 Django 的版本为 3.2,且之后的一系列笔记都将以这个版本为基础,做功能的测试和验证。本篇笔记的目录索引如下:创建环境运行系统,在浏览器中访问介绍 Django 的 application 的基本框架创建视图和接口,在浏览器中访问接口1、创建环境首先默认我们已经配置好了环境,或者能够使用 pycharm 来操作。使用 conda 创建一个虚拟环境,用的是 py3原创 2022-01-08 15:51:47 · 978 阅读 · 0 评论 -
Django 之model 对数据字段进行截取然后返回
比如说有Question 这个model 有个字段名为 field_1,我们需要对该字段数据进行截取,从该字段的 第三位开始,往后截取四个字符,处理方法如下:from django.db.models.functions import Substr Question.objects.annonate(new_field=Substr(‘field_1’, 3, 4)).values("new_field")注:截取的下标是从 1 开始的,从第几位开始截取,Substr 的第二个参数就是几,第三个参数原创 2022-01-01 15:13:24 · 1028 阅读 · 0 评论 -
Django之model 对数据排序,等于某个特殊值的数据置顶返回
有一个需求,比如说 某个 model Question 下有一个字段, priority,这个字段是个 int 型数据,然后获取筛选出来的数据需要 按照 priority 倒序排序,但是 priority = 3 的数据要置顶。这种使用方法用 mysql 的语法很好解决:order by priority = 3 desc但是用 Django 自带的 model 的方法,可能是搜索的关键词不对,用中文搜索了好久没有结果,然后尝试使用 英文的关键词搜索:django order_by field eq原创 2022-01-01 14:43:20 · 1562 阅读 · 0 评论 -
Django 之 distinct、count、sum字段的几种用法
1、distinct 某个字段sql语句:SELECT DISTINCT user FROM user_table WHERE create_date = ‘2020-12-08’;model语句:UserModel.objects.filter(create_date=‘2020-12-08’).values(“user”).distinct()2、distinct 多个字段sql语句:SELECT DISTINCT user, status FROM user_table WHERE原创 2021-06-20 01:20:36 · 5139 阅读 · 2 评论 -
Django 之 搜索数据库空值
当我们写入数据库数据,有时候会写入空值情况,有一种是 nul,有一种是 空字符串 ‘’,以下是搜索两种空值的方式:搜索 null 值:Model.objects.filter(field__isnull=True)如果搜索 空字符串怎么办呢,field=’’ 吗?不,上述语句搜索不出来要的数据,搜索 空字符串的方式为:Model.objects.filter(field__exact='')...原创 2021-06-20 01:08:35 · 1398 阅读 · 0 评论 -
Django 之filter倒序排列将 null 放在末尾
如何实现将在 filter 将某个字段(假设为 target_field)中为空(即数据库中为 NULL)的数据放在末尾返回,以下是方法:from django.db.models import Fquery = Model.objects.all()query = query.order_by(F"target_field").desc(nulls_last=True)...原创 2021-06-16 01:14:52 · 688 阅读 · 0 评论 -
Django 之 redis使用哨兵模式
redis 使用哨兵模式的方法在以前的博文中有介绍过,那么如果我们 Django 的系统用 cache 和 celery 连接的 redis 是哨兵模式,使用方法是怎么样的呢?一起来看一下 demo 吧。注意:celery 仅在 4.2 版本以后才支持 redis 使用哨兵模式。以下是用到的 依赖的版本情况:celery==4.2.0Django==2.1django-redis==4.10.0django-sentinel==0.1.0redis==3.2.0基础信息master n原创 2021-01-31 14:07:20 · 1830 阅读 · 0 评论 -
Docker系列笔记 之使用 Docker 运行 Django 容器
首先此篇笔记默认你已经安装好了 Docker,并了解 Docker 的基础概念,诸如镜像、容器、以及他们之间的关系等。如果不太了解,等我回头了解清楚以后,可以再写一篇文章阐述一下。(狗头当然,对于这篇文章,你就算不是很了解相关概念也没关系,照着我的步骤先敲一遍代码,然后慢慢理解也可以。本文的内容大致如下几步:镜像准备Django 文件准备Dockerfile 文件准备build 构...原创 2020-04-15 16:40:44 · 793 阅读 · 2 评论 -
Django 之使用 Redis 作为缓存系统用法及示例
Django 有几种方式作为缓存系统,数据库、内存等,这里介绍一下使用 Redis 作为Django 的缓存系统的用法和示例。1、安装与设置首先第一步,redis 的安装,这个就略过,Ubuntu 上可以在线安装,然后是安装 Python 的相关依赖,语法如下:pip3 install django-redis如果不是在虚拟环境下可能需要加 sudo 权限。settings.py 文件...原创 2020-03-29 18:27:57 · 837 阅读 · 0 评论 -
Django 之设置静态文件夹
建立好一个 Django 的项目以后,需要设置一个静态文件的访问地址。在 settings.py 文件中,有一行:这个是系统静态文件访问地址的 路由,也就是说在系统配置以后要访问系统的静态文件,就要加上这个。接下来在这一行的下面加上这一行:STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"),]然后在 Django 系...原创 2020-02-17 00:58:46 · 682 阅读 · 0 评论 -
Django 之filter的或操作——Q
在 Django 中,使用 filter 查询操作,如果是 与 操作,那么两个 filter 连用,或者放到同一个括号里就行,比如:Book.objects.filter(id__gte=5).filter(id__lte=10)或者:Book.objects.filter(id__gte=5, id__lte=10)如果是想要 或 操作,比如 id <= 5 并且 id >...原创 2020-02-06 12:55:39 · 4832 阅读 · 2 评论 -
Python 之使用 celery 实现消息队列,异步函数
关于celery 的实现消息队列,以及异步函数的使用有很多用途,比较常见的一个用途就是前端向后端发起一个请求,后端完成这个请求需要较长的时间,可以先向前端返回结果,然后将这个实现的过程存储,在后端慢慢实现。那么这个过程,就可以使用 celery 来实现。技术框架:在这里用到的 Python 的后端框架是 Django。celery 可以使用的中间件有 Redis,rabbitmq 等,这里...原创 2020-01-31 18:43:19 · 747 阅读 · 1 评论 -
Django 之将 ORM 语句转化成原生sql 语句
使用 Django 有个很方便的东西就是它的 ORM 查询语句,但是有时候碰上一些复杂的语句,或者新用到的功能,比如 distinct, sum。我们想要知道使用 ORM 查询返回的结果是不是正确,我们可以将之对应的 MySQL 语句打印出来印证一下。有两种方法,如果是比较简单的查询语句,可以使用以下方法:ArticleInfo.objects.filter(id = 1).query.__...原创 2019-11-03 13:08:43 · 3148 阅读 · 0 评论 -
Django 之禁止特定的 IP访问系统
有时候我们上一些网站,或者用爬虫技术去爬,使用的次数很频繁,会被网站记录加入黑名单,当我们再次访问的时候会被提示,你不能访问该网址。那么这个技术在 Django 里面如何实现呢?我搜索了一些方法,找到的资料不多,有一些可能有效,但是没有可以直接运行 demo,那么这里就提供一种使用中间件的 demo,亲测有效。自定义一个 middleware.py 文件,这个文件要在 Django 的 se...原创 2019-03-19 23:36:16 · 3903 阅读 · 0 评论 -
Django 之自定义头部信息
当我们使用 Django 来搭建一套网页系统,有时候我们会需要在网页里加入一些信息,比如宣示版权之类的信息,而如果在每一个需要渲染的页面都加上这些信息,会比较麻烦。而在 Django 里有一个中间件 middleware 可以帮助我们实现这个功能而不需要在每一个返回的 HTML 页面都手动加上。使用方法如下:1、settings.py 里面加上中间件比如我们在创建完一个系统以后,系统的名称...原创 2019-03-16 23:03:36 · 2148 阅读 · 0 评论 -
Django 之在系统根目录下运行脚本使用 ORM
As we all know ,在用 Django 搭建的系统下,如果涉及到数据库的一些简单使用,我们可以使用到其自带的 ORM 来操作,十分简便。而要用到这个功能,除了直接在 views.py 文件中使用,如果我们要进行一些小的测试,比如某条语句,某个函数可以在系统的根目录下使用 Django 的 shell 操作(至少我是这样)。这个操作对于我们一些简单的函数测试提供了极大的便利,而如果我...原创 2019-03-23 01:57:29 · 396 阅读 · 0 评论 -
Django 之 models 里的 auto_now 和 auto_now_add
当我们在 Django 系统里定义 models.py 文件时,有时候会涉及到 DateTimeField 或者 DateField 或者 TimeField,分别对应的是 MySQL 里面的几个关于时间的字段。这些字段用于我们保存或者更新某条数据时做的时间的一个标记,那么其中就会涉及到两个参数,auto_now 和 auto_now_add。如下所示:created_time = Date...原创 2019-03-27 23:13:37 · 737 阅读 · 3 评论 -
Django 之发送邮件
有这样一个功能需要实现:在 Django 布置的系统里,有时候运行到某个功能的时候会报错,我们可以使用 try except 来避免这种报错,让程序继续运行下去,但有时候我们会想要捕获这种错误,并且实时的告知我们,我想到一个功能就是通过发送邮件的方式。Django 里有一个模块:from django.core.mail import send_mail可以很方便地实现我们需要的功能。如...原创 2019-04-08 23:14:32 · 430 阅读 · 0 评论 -
Django + uwsgi + Nginx处理静态文件及动态路由
据说,据说哈,Nginx 这个东西用于请求静态文件很厉害,具体表现在速度很快,前几天我在网上查找了一些教程,然后自己动手试了一下,快不快还不知道,但是这几样东西确实是可以结合在一起的,接下来就来记下我这几天走过的路,以下是目录。1. 开启一个Django项目,创建 static 目录2. 安装 Nginx ,开启Nginx服务3. 安装 uwsgi 通过uwsgi 启动 Django4. ...原创 2019-04-26 00:03:32 · 2298 阅读 · 0 评论 -
Django 之将models导入数据库
之前,在公司接手的项目,虽然是用 Django 搭建的环境, 但是每次修改数据库的字段以后,因为怕把数据误删,所以都是在 MySQL 增加字段,然后在 Django 的 models.py 文件手动增加。最近重新阅读 Django 的官方文档,发现无论是 新建 APP,还是修改原有的 models.py 文件同步到MySQL,都可以直接使用几条命令一条龙服务,而且以及测试过了不会删除原有数据。...原创 2019-05-13 21:58:24 · 1364 阅读 · 0 评论 -
Django报错之django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE7\\x94\\xA8
标题的完整错误是:django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7...' for column 'name' at row 1")如果你在使用 Django 的时候 使用如下命令:python3 manage.py migrate 的时候遇上这个...原创 2019-08-09 00:05:12 · 3430 阅读 · 5 评论 -
Python与MySQL的长连接
Python与MySQL的长连接在系统运行中,有时候会需要与MySQL保持一个长连接,可以在函数外将连接设置为一个全局变量:import pymysqldb = pymysql.connect(localhost = '127.0.0.1', user = 'user', passwd = 'password', port = 3306, db = 'dbanme')cursor = db...原创 2019-01-06 02:38:18 · 6120 阅读 · 0 评论