一组与django相关的函数

django-extra-tools的Python项目详细描述


https://travis-ci.org/tomi77/django-extra-tools.svg?branch=masterhttps://coveralls.io/repos/github/tomi77/django-extra-tools/badge.svgCode Climate

安装

pip install django-extra-tools

快速启动

启用django-extra-tools

INSTALLED_APPS=[...'django_extra_tools',]

安装SQL函数

python manage.py migrate

django 1.4上的stringagg聚合函数需要monkey补丁

fromdjango_extra_tools.monkeyimportpatch_djangopatch_all()

模板过滤器

分析日期时间

从字符串分析datetime。

{%loadparse%}{{string_datetime|parse_datetime|date:"Y-m-d H:i"}}

分析日期

从字符串分析日期。

{%loadparse%}{{string_date|parse_date|date:"Y-m-d"}}

解析时间

从字符串分析时间。

{%loadparse%}{{string_time|parse_time|date:"H:i"}}

分析持续时间

从字符串分析持续时间(timedelta)。

{%loadparse%}{{string_duration|parse_duration}}

聚合

第一个

返回第一个非空项。

fromdjango_extra_tools.db.models.aggregatesimportFirstTable.objects.aggregate(First('col1',order_by='col2'))

最后

返回最后一个非空项。

fromdjango_extra_tools.db.models.aggregatesimportLastTable.objects.aggregate(Last('col1',order_by='col2'))

中值

返回中值。

fromdjango_extra_tools.db.models.aggregatesimportMedianTable.objects.aggregate(Median('col1'))

斯特林格

将值合并为文本。字段用“分隔符”分隔。

fromdjango_extra_tools.db.models.aggregatesimportStringAggTable.objects.aggregate(StringAgg('col1'))
H2>模型MIXIN < /H2>
< H3>

created_at字段添加到模型。

fromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.CreatedAtMixin,models.Model):passmodel=MyModel()print(model.created_at)
< H3>创建BYMIXIN < EH3>

created_by字段添加到模型。

fromdjango.contrib.auth.modelsimportUserfromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.CreatedByMixin,models.Model):passuser=User.objects.get(username='user')model=MyModel(created_by=user)print(model.created_by)
< H3>更新ATMIXIN < EH3>

updated_at字段添加到模型。

fromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.UpdatedAtMixin,models.Model):operation=models.CharField(max_length=10)model=MyModel()print(model.updated_at)model.operation='update'model.save()print(model.updated_at)

更新BYMIXE< EH3>

updated_by字段添加到模型。

fromdjango.contrib.auth.modelsimportUserfromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.UpdatedByMixin,models.Model):operation=models.CharField(max_length=10)user=User.objects.get(username='user')model=MyModel()print(model.updated_by)model.operation='update'model.save_by(user)print(model.updated_by)

< H3> DeleDATA混合蛋白< EH3>

deleted_at字段添加到模型。

fromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.DeletedAtMixin,models.Model):passmodel=MyModel()print(model.deleted_at)model.delete()print(model.deleted_at)

删除BYMIXIN < EH3>

deleted_by字段添加到模型。

fromdjango.contrib.auth.modelsimportUserfromdjango.dbimportmodelsfromdjango_extra_tools.db.modelsimporttimestampableclassMyModel(timestampable.DeletedByMixin,models.Model):passuser=User.objects.get(username='user')model=MyModel()print(model.deleted_by)model.delete_by(user)print(model.deleted_by)

< H3>创建MIXIN < EH3>

created_atcreated_by字段添加到模型中。

< H3>更新的混合蛋白< EH3>

updated_atupdated_by字段添加到模型中。

< H3>删除混合蛋白< EH3>

deleted_atdeleted_by字段添加到模型中。

数据库函数

批次

为给定queryset中的每个批返回(start、end、total、queryset)元组。

fromdjango_extra_tools.db.modelsimportbatch_qsqs=Table.objects.all()start,end,total,queryset=batch_qs(qs,10)

pg_版本

返回特定连接的PostgreSQL版本的元组。

fromdjango_extra_tools.db.modelsimportpg_versionversion=pg_version()

http响应

httpresponsegetfile

一个带有“下载文件”头的http响应类。

fromdjango_extra_tools.httpimportHttpResponseGetFilereturnHttpResponseGetFile(filename='file.txt',content=b'file content',content_type='file/text')

wsgi请求

get_客户端ip

从请求中获取客户端IP。

fromdjango_extra_tools.wsgi_requestimportget_client_ipip=get_client_ip(request)

管理层

oneinstancecommand

只运行一个命令实例的管理命令 姓名name。名为name的其他命令不能在 同时。

fromdjango_extra_tools.managementimportOneInstanceCommandclassCommand(OneInstanceCommand):name='mycommand'defhandle_instance(self,*args,**options):# some operations

nagioscheckcommand

执行nagios检查的管理命令。

fromdjango_extra_tools.managementimportNagiosCheckCommandclassCommand(NagiosCheckCommand):defhandle_nagios_check(self,*args,**options):returnself.STATE_OK,'OK'

中间件

xhrmiddleware

这个中间件允许跨域xhr使用html5 postmessage api。

MIDDLEWARE_CLASSES=(...'django_extra_tools.middleware.XhrMiddleware')XHR_MIDDLEWARE_ALLOWED_ORIGINS='*'XHR_MIDDLEWARE_ALLOWED_METHODS=['POST','GET','OPTIONS','PUT','DELETE']XHR_MIDDLEWARE_ALLOWED_HEADERS=['Content-Type','Authorization','Location','*']XHR_MIDDLEWARE_ALLOWED_CREDENTIALS='true'XHR_MIDDLEWARE_EXPOSE_HEADERS=['Location']

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何创建Restful服务并将其部署到OSGi容器?   java如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?   java用户无法注销firebase 安卓   java Undertow始终将字符集添加到ContentType头,即使它不是文本MIME类型   java LocalBroadcastManager未正确接收消息   foreach在Java中有没有比For循环更好的方法可以灵活地遍历集合?   java如何在安卓上移动球   在OSGi下的Log4j中使所有记录器异步时,java ClassNotFoundException   java未知输入字节长度转换为int   java测试工厂在使用前缀命名时抛出NPE   对象的副本(JAVA)   java SP20310:无法打开文件。sql   java Spring安全性仅为一条路径添加安全性   java在idea中获取菱形运算符的编译错误