随笔分类 - Django
摘要:1. 为什么在redis中,一个页面会保存两个key:cache_key以及cache_header?
2. 页面缓存是如何被唯一标识的?当请求头不同的时候(比如换了一个用户请求相同的页面)会使用同一个缓存吗?
阅读全文
摘要:执行顺序 按照settings.MIDDLEWARE的顺序,先由上至下执行所有的process_request,然后由上至下执行所有的process_view,最后由下至上执行所有的process_response。如: MIDDLEWARE = [ "django.middleware.secur
阅读全文
摘要:request.POST request实际上是django/core/handlers/wsgi.py::WSGIRequest的实例,而WSGIRequest是HttpRequest的子类 class WSGIRequest(http.HttpRequest): def _get_post(se
阅读全文
摘要:connections与connection db.connections是一个类似字典的对象,可以通过某个数据库连接的别名获取这个数据源的connection。比如connections['my_db_alias'] from django.db import connections for ke
阅读全文
摘要:使用 应从django模块引入配置: from django.conf import settings 而不是直接从项目文件中引入 from proj import settings 直接从项目文件中引入会破坏app的独立性。比如我想要把proj项目中的支付模块pay_app分离出去,就要修改所有p
阅读全文
摘要:```runserver 0.0.0.0:8000```表示将django进程使用的socket绑定ip设置为```INADDR_ANY(0)```,因此socket会在8000端口监听从本机所有网卡发来的数据,相当于绑定了本机的所有ip地址。
如果不为socket指定绑定任何端口,或者将绑定的端口设置为0时,系统会在本机可选的端口中为socket随机绑定一个
阅读全文
摘要:背景 业务需求:用户可创建多个多人任务,需要在任务截止时间前一天提醒所有参与者 技术选型: Celery:分布式任务队列。实现异步与定时 django celery beat:实现动态添加定时任务,即在创建多人任务时添加定时。django celery beat插件本质上是对数据库表变化检查,一旦有
阅读全文
摘要:一、分析请求慢响应的主要原因 将请求执行的任务按功能分为几块,用time.time()打印每个模块的执行时间,大部分情况下性能会主要消耗在某一个模块上,即80%的性能问题是出在20%的代码上 找到主要原因后,就专注于优化这一个模块 二、使用django.db.connection.queries查看
阅读全文
摘要:当数据库数据量很大时(百万级),许多批量数据修改请求的响应会非常慢,一些不需要即时响应的任务可以放到后台的异步线程中完成,发起异步任务的请求就可以立即响应 选择用线程池的原因是:线程比进程更为可控。不像子进程,子线程会在所属进程结束时立即结束。线程可共享内存。 请求任务异步处理的原理 使用 模式启动
阅读全文
摘要:这个错误的意思是,不能在update某张表的where条件中,再次select这张表的某些值作为筛选条件,比如: 修改sql语句的解决方法是: 通过 select from message 创建一个message的临时表,这样,update与select min(id) from操作的就不是同一张实
阅读全文
摘要:数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法与工具
阅读全文
摘要:每个app使用不同的数据库 1. 配置数据库连接 2. 配置数据库路由 3. 数据库路由文件: 至此,使用app1的model会访问default数据库,使用app2的model会访问db1数据库 同一个app下使用不同数据库 只需要在model class中修改app_label的值即可,app_
阅读全文
摘要:Query是如何工作的 Django QuerySet是懒执行的,只有访问到对应数据的时候,才会去访问数据库。另外如果你再次读取查询到的数据,将不会触发数据库的访问,而是直接从缓存获取。 比如 在访问两个数据库的时候,需要把对前一个数据库访问的结果转为缓存数据再执行对下一个数据库的访问,比如 多使用
阅读全文
摘要:当服务器500错误的时候,普通日志只会记录一行500的request信息,并不会记录详细的报错定位 需要添加一个在日志中记录详细错误信息的middleware 将此中间件添加到settings的MIDDLEWARE_CLASSES中 使用Django logger 效果
阅读全文
摘要:使用RotatingFileHandler控制日志文件的大小 设置RotatingFileHandler的maxBytes与backupCount,这两个参数默认是0。 当两个参数都不为0时,会执行rallover过程:log文件大小接近maxBytes时,新建一个文件作为log的输出,旧的文件会被
阅读全文
摘要:Django项目有一个耗时较长的update过程,希望在接到请求运行update过程的时候,Django应用仍能正常处理其他的请求,并且update过程要求不能并行,也不能漏掉任何一个请求 使用celery的solo模式解决 安装redis https://github.com/microsofta
阅读全文
摘要:render_to_response 参数顺序:(template_name, dictionary=None, context_instance=None) 在django模板系统中,有两种封装模板变量的类,一个是django.template.Context,这是最常用的,我们在使用render
阅读全文
摘要:安装包 如果在windows系统,需要下载whl文件手动pip安装 https://pypi.org/project/Pillow/ files 设置 1、首先在settings.py中定义MEDIA_ROOT与MEDIA_URL。例如: files可以是项目根目录的任何一个文件夹 2、在urls.
阅读全文
摘要:DRF(Django REST framework)是一个高度封装的框架,这导致想完成一件事情可以通过重写父类函数的方式从DRF的各个层次来写,都能够实现目的。 比如写视图函数,可以用继承APIView的方式或者继承Viewsets的方式,甚至直接写视图函数 但是想要更加干净简洁的代码,还是需要找到
阅读全文
摘要:1045, “Access denied for user 'root'@'localhost' (using password: YES)” 数据库的密码或用户名不对,查看settings.py 1049, "Unknown database 'nav_db'" 数据库不存在,查看settings
阅读全文

浙公网安备 33010602011771号