Django
文章平均质量分 78
haeasringnar
这个作者很懒,什么都没留下…
展开
-
Django 使用不同配置文件的三种方式
1、背景简要开发过程中,环境分离是很常见的情况,一般都会分开发环境和生产环境。也有些分开发环境、日常环境、生产环境。当环境更多的时候,咱在写代码的时候当然不希望每次在上代码时再改配置,比较好的方法就是写多个配置文件,通过环境变量来决定使用哪个配置文件。Django 中默认是使用项目目录中的 settings.py 作为配置文件,接下来就按照开发、生产两套环境来探讨下,在 Django 中都有什么方式来动态使用配置文件。写在前面:本例的 Django 项目名称为 base_django_api 就是原创 2021-11-12 18:10:52 · 2500 阅读 · 0 评论 -
Django 使用内置的单元测试
1、在你的app内的tests.py文件内添加测试用例代码本例的代码结构如下:由于我的app较多,也为了方便管理,我将app统一放在了apps目录下,想要达到这样的效果,只需在settings.py配置文件中增加以下代码...# Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file_原创 2020-08-03 22:02:11 · 449 阅读 · 0 评论 -
Django 使用定时任务的多种姿势对比
1、安装django-apschedulerpip install django-apscheduler2、配置settingsINSTALLED_APPS = ( ... "django_apscheduler",)3、迁移数据库因为django-apscheduler会创建表来存储定时任务的一些信息,所以将app加入之后需要迁移数据python manage.py migrate4、完整示例 在views.py中增加你的定时任务代码注意:如果在其他文件中添加代码是没有效果原创 2020-05-17 18:44:51 · 9649 阅读 · 3 评论 -
Django 中使用Celery实现异步任务
1、在settings.py 同级目录下,新增一个celery.py的文件需要注意的是:你的项目目录名要和配置一样例如我的项目目录名就是 base_django_api我的目录结构如下:# celery.pyfrom __future__ import absolute_import, unicode_literalsimport osfrom celery import Cele...原创 2020-03-31 21:58:35 · 2624 阅读 · 2 评论 -
django 利用中间件和jwt 使被冻结用户无任何操作权限
1、jwt相关方法将得到的token转为payload再将payload转为user iddef jwt_encode_handler(payload): return jwt.encode( payload, api_settings.JWT_PRIVATE_KEY or api_settings.JWT_SECRET_KEY, ap...原创 2019-12-02 16:10:45 · 542 阅读 · 0 评论 -
Django 使用 signals 在数据被新增、修改、删除时执行一些业务逻辑
1、模型示例from django.db import modelsfrom soft_delete_it.models import SoftDeleteModelclass BaseModel(models.Model): sort = models.IntegerField(default=1, verbose_name='排序') content = models....原创 2019-11-26 13:23:27 · 807 阅读 · 0 评论 -
Django DRF ModelSerializer 对不属于模型中的字段进行验证的解决方法
示例的序列化器class AddFlowBodySerializer(serializers.ModelSerializer, BaseModelSerializer): approval_flow = serializers.IntegerField(label='审批流ID') # 该字段是不属于 FlowBody 模型 class Meta: model =...原创 2019-10-24 08:34:42 · 1572 阅读 · 0 评论 -
django orm 查询时比较两个字段后过滤,对同一条记录里的两个字段进行比较查询 Django F对象的使用
需要使用django中的F 对象先看看模型class Test(models.Model): all_num= models.IntegerField(default=0, verbose_name='总数量 ') have_num= models.IntegerField(default=0, verbose_name='已有数量') class Meta: ...原创 2019-04-10 16:35:23 · 3141 阅读 · 0 评论 -
Django 为模型提供初始数据 模型迁移后自动插入初始数据到数据库
1、先在app目录下创建一个json文件本例在role目录下创建了一个名为role.json的文件,内容为其中role.Role role为app名 Role为模型的类名[ { "model":"role.role", "pk":1, # 不指定,可以省略 "fields":{ "name":"SuperAdmin", ...原创 2019-04-17 09:44:38 · 1303 阅读 · 0 评论 -
drf 中serializers.HiddenField使用方法
class CurrentUser(object): def set_context(self, serializer_field): self.user_obj = serializer_field.context['request'].user def __call__(self): return self.user_objclass Ge...原创 2019-04-29 21:38:31 · 1473 阅读 · 1 评论 -
django中使用计算字段
# 计算属性 使用计算属性,在drf中必须要将它手动放到 fields 里面# def allname(self):# return '%s,,,%s' % (self.name, self.username)# allname.short_description = '全名'...原创 2019-05-25 09:44:33 · 2106 阅读 · 0 评论 -
Django Vue实现动态菜单、动态权限
随着前后端分离架构的流行,在 web 应用中,RESTful API 几乎已经成为了开发者主要选择,它使得客户端和服务端不需要保存对方的详细信息,也就是无状态性,但是这样在项目中需要动态菜单和动态权限就困难起来,本场Chat就是为大家提供一种思路来解决实际项目中如何实现动态菜单和权限。因为 RESTful API 通常是无状态性,服务器怎么样才能知道用户已经登录呢?这个时候常用的做法就是每个请求...原创 2019-07-27 22:30:42 · 4728 阅读 · 5 评论 -
Django 中将模型对象转换成dict对象后利用serializer来保存
from django.forms.models import model_to_dicttop_flow_obj = FlowObject.objects.filter().last()to_flow_dict = model_to_dict(top_flow_obj)print(to_flow_dict)item_ser = AddBudgetDetailSerializer(dat...原创 2019-08-06 14:16:16 · 1193 阅读 · 0 评论 -
django-rest-framework 最全 serializers 使用解析
def get_ObjectFlow(type): ''' 返回对象 ''' if type == 0: approval_flow = TableClass.objects.filter(flow_name='请假审批').first() elif type == 1: approval_flow = TableClass....原创 2019-08-11 11:10:00 · 819 阅读 · 2 评论 -
Django 使用models.Manager扩展查询的方法
先来扩展一下使用.all()查询时,通过传入自定义参数返回不同的数据集1、在模型中使用models.Manager# 自定义扩展.all()方法class MiddlewareRegionSplitManager(models.Manager): def all(self, user=None): if user: # 当没有 region_spli...原创 2019-09-07 10:29:31 · 499 阅读 · 0 评论 -
Django DRF在创建父表数据时同时将子表数据一同创建
1、用于测试的模型# 父表模型class Auth(SoftDeleteModel, BaseModel): auth_type = models.CharField(max_length=255, verbose_name='权限名称') class Meta: db_table = 'A_Auth_Table' verbose_name =...原创 2019-09-08 17:06:00 · 1584 阅读 · 1 评论 -
Django DRF model 多对多关系使用示例
本例环境:Django=2.0.6 djangorestframework=3.9.21、模型示例from django.db import modelsclass BaseModel(models.Model): sort = models.IntegerField(null=True, blank=True, verbose_name='排序') content = m...原创 2019-10-24 08:35:51 · 3338 阅读 · 0 评论 -
Django 接入微信支付之小程序&JSAPI支付
1、统一下单接口# 生成随机字符串的方法def get_nonce_str(): base_str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' random_str = ''.join(random.sample(base_str, 32)) return ra...原创 2019-02-27 16:03:02 · 1855 阅读 · 0 评论 -
Django 定时任务 django-crontab的使用
1、安装依赖pip install django-crontab2、使用crontab在settings.py INSTALLED_APPS引入appINSTALLED_APPS = [ ... 'django_crontab']在settings.py中配置定时任务,增加一下代码# 定时任务'''crontab范例:每五分钟执行 */5 * * * ...原创 2019-02-27 15:55:40 · 1536 阅读 · 0 评论 -
django本地单独运行models的方法
import osimport djangoos.environ['DJANGO_SETTINGS_MODULE'] ='base_django_api.settings'django.setup()def main(): import base.models as mol print(dir(mol)) if __name__ == '__main...原创 2019-01-28 12:24:46 · 702 阅读 · 0 评论 -
django+vue打造前后端分离的项目时,跨域问题的解决!
1、首先你要先安装django-cors-headers 这个包pip install django-cors-headers2、配置settings.py安装appINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes...原创 2018-06-30 17:42:37 · 11245 阅读 · 3 评论 -
django restful使用,完成高可定制的接口输出(基于APIView)!rest framework设计典范
本文开发环境: python3.6 django2.0.6 djangorestframework3.8.2 值得注意的是要使用django restful并且和数据交互你还需要的必要软件和依赖: 依赖: pymysql django-filter coreapi Markdown django-crispy-forms django-guardian 软件: Nav...原创 2018-06-28 22:30:44 · 8509 阅读 · 5 评论 -
django ORM 操作记录
查询语法要点#查询user所有记录 id=1 的数据,返回的是一个列表,user=User.objects.all().filter(id=1)#查询user表 条件id=1 的数据,返回的是一个列表,user=User.objects.filter(id=1)#查询user表 条件id=1 并且没有删除 的数据,返回的是第一个对象user=User.objects.filter(i...原创 2018-07-11 16:40:16 · 5991 阅读 · 0 评论 -
django中使用定时任务执行某些操作时的规范操作
安装配置pip install django-crontab再在settings.py中添加app:INSTALLED_APPS = ( ... 'django_crontab', )开始创建定时任务在app内新建一个py文件,我在这里新建一个util.pydef task(): print('我会被每分钟执行一次,并且将内容...原创 2018-07-23 16:29:54 · 7537 阅读 · 0 评论 -
django ORM 获取一条model对象里的所有字段名(也可以输出verbose_name),并做局部修改更新到数据库,提高效率。
在django restful开发的过程中,对于前端传来的patch请求,这个时候我们往往只是修改部分字段。但是通常情况下我们又不得不去获得所有数据更改,或者用if else 进行匹配修改。这个过程无疑是枯燥且效率低下的。 注:本文作者并没有使用viewset,具体原因暂不讨论。这里使用的是APIView和generics.GenericAPIView 因此在本文中就是来解决这个问题,提高效率...原创 2018-07-13 17:15:38 · 19882 阅读 · 1 评论 -
django orm 使用分组查询配合聚合查询,实现sql的group by count
在使用django时,有些条件下我们必须要使用聚合查询和分组查询时,但是有不想使用sql语句,那么就可以使用ORM提供的方法。 如果要实现如下sql语句: 就是先对course_id分组,然后确定每个组里面user_id的个数。SELECT course_id,count(user_id) as usercount FROM test_bt4.course_user where is_de...原创 2018-08-10 09:49:35 · 15313 阅读 · 0 评论 -
django 中间件详解以及测试代码
django中间件,在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 看图理解中间件 django中间件的执行顺序如上图示 无论是在请求到达view视图之前还是在response返回给用户之前,我们都可以进行拦截到,然后做自己的处理然后在给view处理,或者返回给用户。 这里介绍django中间件可以定义...原创 2018-08-11 19:30:19 · 4830 阅读 · 0 评论 -
Django 中直接使用sql语句 操作数据库
在django中要直接使用sql操作数据库,官方提供了两种方式 1、使用 Manager.raw(raw_query, params=None, translations=None) 使用方法: 先看模型models.pyclass Person(models.Model): first_name = models.CharField(...) last_name = m...原创 2018-08-26 14:26:46 · 11819 阅读 · 0 评论 -
Django 拼接两个queryset 或是两个不可以相加的对象的方式
1、使用 | 直接将两个queryset拼接起来querysets = one_queryset | two_queryset2、使用chain拼接import itertoolsquerysets = itertools.chain(one_queryset,two_queryset)原创 2018-08-26 14:30:49 · 9990 阅读 · 0 评论 -
Django配置日志输出、logging配置最详细大全、控制台日志全部输出到文件、日志/控制台console重定向到文件
django线上环境中的日志输出是相当重要的,它可以将所有的错误、警告、调试等重要信息全部输出到日志,这样便于维护和排查问题。 接下来本文会详细的介绍django logging配置,以及这些配置的含义与作用。 用到的东西,本文也会尽量详细的解答: 首先先来看看实际中配置:配置settings.py写在最前python manage.py runserver >> /...原创 2018-08-25 17:50:59 · 30342 阅读 · 11 评论 -
Django使用uwsgi部署时的配置以及django日志文件的处理
首先保证你有一个可运行的django工程 然后在虚拟环境里面安装好uwsgipip install uwsgi配置nginx的服务如下server { ...原创 2018-08-25 20:46:28 · 13938 阅读 · 0 评论 -
django部署 nginx 配置简单的负载均衡
这里使用的负载均衡就是将过来的请求分发给不同的django服务去处理,不同的django服务使用的相同的数据库,那么来看nginx配置upstream test01 { # 这里配置的是简单的负载均衡,过来的请求,第一个会去8001 第二个会去8002第三个会去8001 以此类推 server 127.0.0.1:8001; server 127.0.0.1:8002;}server ...原创 2018-10-02 12:27:51 · 2737 阅读 · 0 评论 -
docker实战 容器互联的一种方法、docker运行django nginx 并相互链接
这里使用django + nginx做实例,前期准备:1、一个可以运行的django工程2、一个运行django的镜像/容器3、一个运行nginx的镜像/容器1、制作一个属于自己的运行django的镜像拉取官方Ubuntu镜像docker pull ubuntu:16.04运行一个容器docker run -it ubuntu:16.04 /bin/bash# 此命令执行后会进...原创 2018-10-02 13:11:10 · 2012 阅读 · 0 评论 -
基于djang、vue、scrapy-redis、高德地图的豆瓣租房租房信息爬取、存储、可视化综合项目
1、scrapy-redis部分这里主要是用分布式爬虫爬取所有的豆瓣租房信息,然后去重、存数据库(MySQL)。使用分布式的好处是爬取快,可以分布在多台机器上爬取;然后redis可以结合django使用,做到在前台点击一下按钮就可以更新redis键值,从而使scrapy-redis继续爬取最新租房信息。具体代码见码云。2、django部分这里主要是处理数据的,将存好的数据有序的传递到vue前...原创 2018-10-31 22:03:40 · 1114 阅读 · 0 评论 -
基于websocket的点对点实时通讯项目
最近夜晚有些时间,就根据自己的理解写了一个简易的网页版QQ,可以实现实时点对点通讯、添加好友等功能。主要使用到的技术就是websocket,普通的请求依然使用web服务完成本项目你需要的技能包括:Python、Nodejs、VUE、MySQLweb端服务由基于django的项目提供websocket服务由nodejs提供前端部分由vue项目提供先来看看项目演示gif吧…1、点对点实时...原创 2018-12-21 21:04:55 · 1328 阅读 · 0 评论 -
django-drf 控制ip访问频率
# 对应视图文件 views.py#***频率组件****from rest_framework.throttling import BaseThrottleVISIT_RECORD={}class VisitThrottle(BaseThrottle): def __init__(self): self.history=None def allow_re...原创 2019-01-25 14:44:51 · 902 阅读 · 1 评论 -
django restful使用,rest framework设计典范,基于viewset以及mixins的方式
上节收到使用APIView的方式实现的rest接口,但是有的小伙问道为什么使用viewset来写接口,所有下面就来介绍使用viewset的方式。 前提:已经有了一个可以正常运行的django rest framework的project 1、定义模型from django.db import modelsclass Product(models.Model): create...原创 2018-06-30 17:13:33 · 5431 阅读 · 0 评论