当前位置: 首页 > 面试题库 >

从模板中获取Django表单小部件的类型

夏兴生
2023-03-14
问题内容

我正在遍历表单的字段,对于某些字段,我希望布局略有不同,需要更改HTML。

为了准确地做到这一点,我只需要知道小部件类型。它的类名或类似名称。在标准python中,这很容易!field.field.widget.__class__.__name__

不幸的是,你不允许访问模板中的下划线变量。大!

你可以进行测试,field.field.widget.input_type但这仅适用于文本/密码<input ../>类型。我需要更多的分辨率。

对我而言,无论看起来多么困难,在模板级别执行此操作都是最有意义的。我已经将处理字段的HTML的部分代码外包给了包含在字段循环中的单独模板。这意味着它在ModelForms和standard上是一致Form的(如果我写了一个中间Form类,那是不对的)。


问题答案:

从Django 1.11开始,你可以使用widget.input_type。例:

{% for field in form.visible_fields %}
    <input type="{{ field.field.widget.input_type }}"
           id="{{ field.id_for_label }}"
           name="{{ field.html_name }}"
           placeholder="{{ field.label }}"
           maxlength="{{ field.field.max_length }}" />
{% endfor %}


 类似资料:
  • 问题内容: 我是django的新人。 我想创建一个自定义窗口小部件。 forms.py: widget.py: project / widgets / filter.html: 但是它不会呈现新模板,而是仍然呈现旧方法。 你能给我一些提示吗? 问题答案: Django版本 <1.11: 小部件必须实现该方法才能呈现不同的模板: Django 1.11版: 在渲染器的文档中,我们可以找到以下内容:

  • 问题内容: 我在页面上有一些循环,需要根据循环号列出项目。 当我打电话时: 一切正常,但是我真正需要的是: MyCustomRangeTag给了我它可以使用的Python ,而我已经拥有了数量。根据循环号,1、2、3等也是如此。这有可能吗? 问题答案: 这不可能直接实现,因为Django认为这是查找的关键-而不是x 的值。因此,当尝试查找而不是。 使用以下过滤器作为解决方法: 并像这样使用

  • 我用Django开发了一个Web应用。在View函数中,我将一个查询集列表呈现到前端。在我的例子中,标题表是书籍信息,材料是这本书的详细信息,附在哪个课程上,如果这个附加关系是“丢弃”。is_discard在材料表中,而不是这本书丢弃与否。在材料表中,一门课程附带几本书,丢弃状态不是按书而是按书-课对,因为有些书可能在一门课程中丢弃,但在其他课程中有效 看法py: 在前端,query\u resu

  • 问题内容: 我必须在模型表格中添加额外的字段。我的方法是: 但似乎忽略了at的小部件定义,因为我在模板上没有 输入 标签,而是使用了 textarea 。所以我采用下一种方法: 它非常适合我,但是我曾经在声明时为表单字段指定小部件。所以我想知道: 为什么我的第一种方法不起作用?我做错了什么? 问题答案: 多余的字段无关紧要。这有效: 这不是: 确实没有记录,这是我在与该行为有关的文档中可以找到的最

  • 我正在为任何模板化的类实现一个类型提取器。示例用法如下所示: 我怎样才能解决这个问题?

  • 问题内容: 我有两个模板T1和T2。我想获取T1的输出,并在T2内对其进行一些额外的处理。我的问题是: 如何将T1的输出存储在T2的变量中?这有可能吗? 这是一些伪模板: 问题答案: 没有内置支持将模板结果存储在模板变量中,仅用于包含结果。 但是,您可以使用所需的任何复杂功能注册自定义功能。您可以注册一个函数,该函数将执行由其名称标识的模板,并且可以将结果返回为,可以将其存储在模板变量中。 这样做