一系列让你的django生活更轻松的工具。

hand的Python项目详细描述


不同工具、快捷方式、装饰器、窗体和模型字段的集合 让你的django生活更轻松。

安装

pip install handy

概述

下面是对handy的快速概述。 你也可以阅读full docs

避免使用@render_to()装饰符HttpResponserender_to_response()biolerplate。 这个函数将把结果dict呈现为'app_name/foo.html'

@render_to()deffoo(request):return{'bar':Bar.objects.all()# You can easily override default template, content type,# status code and add cookies to response:'STATUS':410,'CONTENT_TYPE':'text/plain'}

使用@render_to_json()decorator的简单json响应程序:

@render_to_json()defposts_by_tag(request,tag=None):posts=Post.object.values().filter(tag=tag)returnlist(posts)

以及更高阶的@ajaxdecorator来处理更复杂的异步操作:

@ajax@ajax.login_required@ajax.catch(Post.DoesNotExist)defenable_post(request):post=Post.objects.get(pk=request.GET['id'])ifpost.author!=request.user:raiseajax.error('permission_denied')post.enabled=Truepost.save()

发送模板中呈现的电子邮件:

render_to_email(article.author.email,'approved.html',{'article':article})

模型字段的集合,附带表单字段和小部件。存储值或选项数组的最显著的不同数组字段:

DAYS=zip(range(7),'Sun Mon Tue Wed Thu Fri Sat'.split())classCompany(models.Model):phones=StringArrayField('Phone numbers',blank=True,default=lambda:[])workdays=IntegerArrayField('Work days',choices=DAYS)company=Company(phones=['234-5016','516-2314'],workdays=[1,2,3,4])company.save()

在模型形式中,phones字段将表示为CommaSeparatedInput,并且 workdays作为多个复选框:

classCompanyForm(forms.ModelForm):classMeta:model=Company

方便的@cached_property实用程序:

classUserProfile(models.Model):phones=models.ManyToManyField(Phone)...@cached_propertydefpublic_phones(self):# this queryset will be constructed only once, thanks to @cached_propertyreturnself.phones.filter(public=True)

一堆数据库查询实用程序,不再修改cursor()

best_offer=fetch_val('select max(value) from offers where ...')forrowinfetch_named('select * from blog_post'):printrow.id,row.title

还有一个中间件,通过去掉不必要的空格,使html输出更精简:

MIDDLEWARE_CLASSES=(...'handy.middleware.StripWhitespace',)

更多信息:

  • 简单的日志总结
  • CommaSeparatedInputMultilineInput数组字段小部件
  • JSONFieldAdditionalAutoFieldBigAutoField
  • 以及一系列数据库、电子邮件、文本和调试实用程序

注意:功能工具,即@memoize@cache,移动到 funcy

如何帮助

  • 给我任何反馈。什么位子最有用?可以添加或更改什么?
  • 带上您的想法和/或代码,让我们所有的Django体验更加有趣

待办事项

  • 文本文档和实用程序文档
  • 在json装饰器中添加对queryset和模型的支持

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

推荐PyPI第三方库


热门话题
Java的Arraylist上的操作运行时是什么?   java按下按钮并显示通知   java如何修复“javax.net.ssl.SSLHandshakeException:20190416之后颁发并由不受信任的旧Symantec根CA锚定的TLS服务器证书”   用于新语言插件SonarQube的java解析器   java ANTLR4:参考书示例静态类定义   java如何计算用户点击按钮的次数以及如何保存按钮。安卓工作室   JSP if()语句中的java HTML不起作用   java仿真器崩溃“无效int”   雪花与Java应用程序的集成   从一家银行一行一行地拿到。带有自定义行尾的java txt文档   java从该方法的参数中获取值并显示   我的Eclipse插件尚未找到JAXBAPI的java实现   类如何从顶部文件夹加载java字节码(如果存在“.”)在子文件夹中?   ibm集成总线ibm MessageBroker Java API:Java。lang.NoClassDefFoundError:com。国际商用机器公司mq。MQException