django表单的附加功能

forms2的Python项目详细描述


表单2:django表单附加功能

forms2包提供了django表单的增强版本。特别是sqlachemy集成和 每个字段的访问控制。

https://api.travis-ci.org/paylogic/forms2.pnghttps://pypip.in/v/forms2/badge.pnghttps://coveralls.io/repos/paylogic/forms2/badge.png?branch=masterDocumentation Status

安装

pip install forms2

使用量

sqlalchemy模型表单示例:

classMyModelForm(SAModelForm):classMeta:model=MyModelmapping={'field1':'instance.child.attribute','field2':'attribute3',}field1=forms.IntegerField()field2=forms.CharField()

显示字段访问控制的简单示例:

classMyForm(FieldAccessMixin,Form):classMeta:access={('field1','field2'):access_admin,'field3':MyForm.access_admin1,None:lambdauser,instance:FieldAccess.enabled,}field1=forms.IntegerField()@classmethoddefaccess_admin1(cls):returnFieldAccess.readonly

一个更真实的现场访问控制示例:

defaccess_bank_details(user,instance):ifnothas_perm(user,instance,'edit_bank_account'):ifhas_perm(user,instance,'edit_contract_id'):returnFieldAccess.readonlyreturnFieldAccess.excludedreturnFieldAccess.enableddefaccess_contract_id(user,instance):ifnot(has_perm(user,instance,'edit_contract_id')andhas_perm(user,instance,'do_stuff')):returnFieldAccess.readonlyclassBankForm(FieldAccessMixin,Form):classMeta:access={('bank_account','bank_name','bank_balance'):access_bank_details,'contract_id':access_contract_id,None:BankForm.access_check,}bank_account=forms.CharField()bank_name=forms.CharField()bank_balance=forms.FloatField()contract_id=forms.IntegerField()some_other_field=forms.CharField()@classmethoddefaccess_check(cls):returnFieldAccess.readonly

使用筛选器语法进行字段访问控制:

@access_filterdefcan_view_event(user,instance):ifuser.has_perm('event','view'):returnFieldAccess.enabled@access_filterdefcan_view_merchant(user,instance):ifuser.has_perm('merchant','view'):returnFieldAccess.enabled@access_filterdefexclude_for_not_finance(user,instance):ifnotuser.has_perm('merchant','some_financial_permission'):returnFieldAccess.excluded...access={# Filters are applied left to right, the result is the first filter to return a FieldAccess value# This will be enabled if you can view the event, else readonly'field_a':can_view_event|default(FieldAccess.readonly),# This will be enabled if you can view the event OR the merchant, else excluded'field_b':can_view_event|can_view_merchant|default(FieldAccess.excluded),# This will be enabled if you can view the event AND the merchant, else excluded'field_b2':can_view_event&can_view_merchant|default(FieldAccess.excluded),# This will be excluded if you don't have some finance permission, else enabled (this is the default)'field_c':exclude_for_not_finance}

接触

如果您有问题、错误报告、建议等,请在 是GitHub project page

许可证

本软件在MIT license

License

版权所有2013 Paylogic International。

更改日志

1.1.2

  • 允许将queryset作为callable传递以使其变懒(bubenkoff)

1.0.1

  • 从值(bubenkoff)获取id时没有异常记录

0.1.9

  • 删除相对进口(wlansu)
  • 在basemodelform(wlansu)的构造函数方法中添加了默认实例=none
  • 修正了测试中的一个PEP8问题。

0.1.8

  • 首次公开发行

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

推荐PyPI第三方库


热门话题
javascript生成两点之间的固定纬度和经度   java为什么不删除并重命名文件?   求数组的和   java在漂亮面孔中使用正则表达式   SOAP(java)中的Hello World。如何修复它?   java I获取应用程序生成错误,配置为“”的资源“attr/arc_position”的值重复   云基础环境中的Java SFTP客户端应用   谷歌应用程序引擎Java查询日期不正常?   java使用cancel按钮对JOptionPane InputDialog循环进行转义   java数字格式总是返回异常   xquery Java Saxon API以“追加”模式写入文件   java Azure函数在第二个插槽中没有响应   java在构建Play应用程序后向其添加动态依赖项   json如何使用Jackson mapper for java。木卫一。可序列化类型字段?