一系列让你的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 Admob不使用webview   Java Wicket表单:序列化对象类“myClassName”时出错   java googledriveapi更新文件与我的帐户管理员   java简单框架未知xml标记解析   java如何使用主类和用户获取Spark应用程序ID   java如何更改自定义属性的值?   java有没有办法在jMock中找到未使用的期望值?   gradle运行任务的java文档?   java通过使用数组来存储文本文件的行,通过覆盖来删除文本文件中的行   用于表达式语言注入的java利用负载   java IDEStyle程序运行   java在运行时启用/禁用Springws   爪哇芦苇。formatNumber NullPointException   java为什么我的代码无法检测两个动态实体之间的碰撞?