django的formpreview更新为使用基于类的视图。

django-cbv-formpreview的Python项目详细描述


用法

我很快会写更好的文档,但现在看看django的 关于其version of this class的文档

这个项目只是一个分叉Django’s FormPreview 上课使用时有一些基本的区别 Django CBV FormPreview的课程版本:

  1. 通过在 子类。这不是用 表单类(即不执行MyFormPreview(MyForm)
  2. 将它包含在URLconf中,就像基于普通类一样 视图(即MyFormPreview.as_view()
  3. 您仍然需要重写done方法,但它只需要 已清除作为参数的form。Django的版本 HttpRequest对象和表单的cleaned_data像所有人一样 基于类的视图,当前的HttpRequest作为 实例属性(即self.request)。
  4. process_preview方法仍然存在,但它需要 form和它将传递给模板的context。不是的 由于相同的原因,传递HttpRequest对象的时间更长 上面

随着上述向后不兼容的变化 公开记录的行为,源代码中的注释 建议了一些可能有助于重写的方法。方法 get_initialsecurity_hashfailed_hash用于获取 一个HttpRequest作为参数,但不再用于相同的参数 上述原因需要注意的其他一些变化:

  • process_params已被删除argskwargs 传递到视图的实例属性可用 名字。如果你需要在看到之前对他们做些什么 已处理,重写dispatch,并确保返回对 父方法dispatch(即return super(MyFormPreview, self).dispatch(request, *args, **kwargs)
  • get_auto_id也已被删除。重写get_form_kwargs 如果你需要的话。

如果我遗漏了什么,请告诉我。

背景

来自contrib.formtools应用程序的FormPreview类是 基于类的视图,在Django已经有5年多了原来 由阿德里安·霍洛瓦蒂撰写,自 释放。

从1.3版开始,Django有一个基于类的“受祝福”版本 意见。此包包含^{tt2}的更新版本$ 从新的FormView类继承的。这使得 django中基于类的视图的一致api。特别的 use是由FormMixin类提供的方法,从中 FormView继承。例如,get_form方法为您提供 控制窗体类的实例化这样你就可以 用非标准参数构造一个实例 补丁的原始动机

我最初追求向后兼容,但在使用了这个 在制作过程中,觉得不值得。最后一根稻草是什么时候 我需要对done中的表单调用save方法Django's公司 FormPreview只通过了cleaned_data,我不想 重新构建表单,因为重新清理将不必要地影响 数据库。

我以前申请过ticket 关于django的trac包含原始的向后兼容版本 django 1.4中的django-cbv-formpreview的。现在我已经崩溃了 向后兼容,我不确定核心dev将如何响应 为了它我个人觉得很少有人真的用这个 功能性,因此对社区的影响最小。

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

推荐PyPI第三方库


热门话题
java如何从数组中打印int值?   prepared语句Java中奇怪的异常PreparedStatement:参数索引超出范围   封装如何在OOP Java中为主方法编码?   java某些手机显示快捷方式徽章需要什么权限?   java TextView不会随OnItemSelectedListener更改   java注释处理器不会自动触发吗?   java Spring JPA如何计算外键数   c#对于这个简单的OOAD问题,哪种设计最优雅?   java如何处理while循环中的异常?   Android Studio错误:进程'command'/home/draven/Downloads/安卓studio/jre/bin/java''结束,退出值为非零2   在使用Payara服务器的Vaadin应用程序中导航到根目录时,java将丢失上下文根目录   使用contentType application/json而不是application/jsonpatch+json的java修补程序   带有tomcat的java HAproxy连接不足   Java:在应用过滤器后创建一个简单的通用方法进行计数   java如何使用多态性创建一个实例化对象的方法,然后用它们高效地填充ArrayList?