
Django
少年白char
StreamFlow开源作者
展开
-
python中werkzeug.Local模块
为什么使用werkzeug.Local而不是threading.local,因为python中应用基于协程运行,使用thread local变量可能会造成请求间数据相互干扰,因为一个线程中存在多个请求。Werkzeug 的设计者认为python自带的ThreadLocal并不能满足需求,主要因为下面两个原因:Werkzeug 主要用“ThreadLocal”来满足并发的要求,python 自带的ThreadLocal只能实现基于线程的并发。而python中还有其他许多并发方式,比如常见的协程(gr.原创 2022-05-18 18:15:23 · 474 阅读 · 1 评论 -
django celery中动态添加周期任务
常用实现方式@periodic_task(run_every=crontab(minute='*/5', hour='*', day_of_week="*"))def get_time(): """ celery 周期任务示例 run_every=crontab(minute='*/5', hour='*', day_of_week="*"):每 5 分钟执行一次任务 """ now = datetime.datetime.now() logger.er原创 2021-06-21 15:00:34 · 1070 阅读 · 0 评论 -
django中bulk_create返回id的三种实现
Django中的QuerySet有bulk_create方法,但是此方法不会如预期的一样返回新增的所有对象的id,这个特性相当令人头疼,不过Postgre SQL在Django1.10后已经可以返回id了,MySQL还是不行所以 我们只能自己实现返回的ids一,category_ids = Category.objects.values_list('id', flat=True)categories = Category.objects.bulk_create([ Category(ti.原创 2021-05-20 11:44:18 · 3308 阅读 · 0 评论 -
django使用gzip实现数据压缩
使用django可以轻松将通过接口请求的数据进行gzip压缩。大大提升用户的体验。全局配置MIDDLEWARE_CLASSES = ( 'django.middleware.gzip.GZipMiddleware',)局部配置from django.views.decorators.gzip import gzip_page# 函数方法@gzip_pagedef viewFunc(request): return HttpResponse("hello"*100).原创 2021-03-25 10:45:44 · 1361 阅读 · 1 评论 -
Django celery 进阶使用
首先在项目中celery.py文件中定义一个celery实例# celery.pyimport osfrom celery import Celery# set the default Django settings module for the 'celery' program.os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')app = Celery('proj')# Using a string her原创 2021-03-20 13:32:56 · 454 阅读 · 0 评论 -
Django celery KeyError “Received unregistered task of type报错解决
报错提示 Did you remember to import the module containing this task?Or maybe you are using relative imports?下面总结几种可能结果消息队列中缓存之前的任务,清理删除消息队列(rabbitmq或redis)看你使用是什么消息队列,重启celery任务未被注册在celery.py中app.autodiscover_tasks(lambda: settings.INSTALLED_APPS.原创 2021-03-18 17:33:46 · 1867 阅读 · 0 评论 -
Django从零开始构建CMDB平台之模型设计(一)
一 模型设计传统设计来讲,是一个资产一个表,那么关系型数据库多少张合适?可以认为不同型号的产品都是一个资产,那么不同产品放在一张表中肯定不现实,每个场景一张表,那么如果新加场景如何考虑?增加字段?增加多少字段?所以我们要引入一种方式进行实现这些信息,不同信息是不一样的,比如id信息是一种信息,主机名等也是一种信息,即使分析的再好,一旦广泛使用起来,那么需求也陆续膨胀这样的设计带来很大的问题:字段无法控制,扩展性不够,大量的字段冗余,看似名字差不多,名字也差不多设计模型class CISche原创 2021-03-04 20:21:38 · 731 阅读 · 5 评论 -
Django orm跨多值关联,链式调用filter/exclude数据与预期不符合问题
一般情况下,QuerySet的切片返回一个新的QuerySet—— 其并未执行查询。一个特殊情况是使用了的 Python 切片语法的 “步长”。例如,这将会实际的执行查询命令,为了获取从前 10 个对象中,每隔一个抽取的对象组成的列表:Entry.objects.all()[:10:2]2,Blog.objects.filter(entry__authors__name='Lennon')(假设有个关联的Author模型),若某项条目没有任何关联的author,...原创 2020-12-24 19:30:38 · 4234 阅读 · 2 评论 -
csrf是什么? Django中csrf的原理?
CSRF攻击CSRF(英语:Cross-site request forgery)是跨站请求伪造的缩写,也被称为XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,CSRF利用的是网站对用户网页浏览器的信任,。举个栗子受害者登录a.com,并保留了登录凭证(Cookie)。攻击者引诱受害者访问了b.com。b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。a.com接收到请求后,对请求进行验证,并原创 2020-11-28 14:45:17 · 3473 阅读 · 0 评论 -
PDF.js跨域(django后端处理数据流方法)
前言PDF.js is a Portable Document Format (PDF) viewer that is built with HTML5.下载地址https://github.com/mozilla/pdf.js/releases跨域网上也有一些设置nginx服务器实现跨域,这里只考虑是把pdf文件请求到后端返回数据流的形式来实现首先修改viewer.jsfunction webViewerLoad() { var config = getViewerConfigu原创 2020-07-28 10:30:52 · 2620 阅读 · 0 评论 -
Docker部署应用 Django+daphne+Gunicorn+Nginx+Redis
title: Docker部署应用 Django+daphne+Gunicorn+Nginx+Redisdate: 2020-07-22author: charlesTags: dockerSlug: docker-django-daphne-gunicorn-nginxCategory: python前言发布于Docker部署应用 Django+daphne+Gunicorn+Nginx+Redis这里使用Docker部署应用,用到的技术栈Django==2.2.14Daphne,原创 2020-07-23 12:10:18 · 5531 阅读 · 0 评论 -
代码放在Docker image还是挂载到volume
首先需要明确的是:Docker到底能够带来什么样的好处,Docker带来轻量级虚拟化容器方面的优势(资源利用率高,创建快捷,环境纯粹) ? 还是镜像带来的优势(便于部署,记录容器状态,持续集成等)? 确定了使用的场景,才好说明代码到底放到什么地方更合适。举几个例子,可以根据场景灵活的方式使用代码和数据:场景一:如果做好了所有代码,想分发给其他使用者,这种无疑代码放到image是最佳的,包括数据库初始化脚本等。场景二:如果是开发环境,代码是用于调试,代原创 2020-06-12 16:22:31 · 1073 阅读 · 0 评论 -
Django 聚合函数进阶
Django里数据库sql函数example model:class Author(models.Model): name = models.CharField(max_length=50) age = models.PositiveIntegerField(null=True, blank=True) alias = models.CharField(max_leng...原创 2019-11-19 12:18:57 · 1828 阅读 · 4 评论 -
Django进阶之session
基于cookie做用户验证时:敏感信息不适合放在cookie中session依赖cookiesession原理cookie是保存在用户浏览器端的键值对session是保存在服务器端的键值对 session服务端中存在的数据为:session = { 随机字符串1:{ 用户1的相关信息} 随机字符串2:{ 用户2的相关信息}}session客户端即客户端的...转载 2018-05-07 10:50:50 · 201 阅读 · 0 评论 -
django rest framework serializers小结
引言 serializers是什么?官网是这样的”Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other conte...转载 2018-05-08 14:49:54 · 227 阅读 · 0 评论 -
django how to mock aws S3BotoStorage?
解决方法只要mock _save 方法即可 @mock.patch('storages.backends.s3boto.S3BotoStorage._save') def test_create_edit_supporting_doc_post_success(self, mock_save): mock_save.return_value = './...原创 2019-08-27 15:40:17 · 180 阅读 · 0 评论 -
django unit test 是更改了数据库字段 没有变化
解决方法尝试使用 refresh_from_db()原创 2019-08-27 17:16:31 · 331 阅读 · 0 评论 -
Django模型之Meta选项详解
Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。而可用的选项大致包含以下几类abstract这个属性是定义当前的模型是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段。Options.abstract如果abstract = True 这个model就是一个抽象类app_label这个选型只在...转载 2018-04-26 16:36:43 · 373 阅读 · 0 评论