【问题标题】:Flask/Jinja2 field formatting via macros通过宏格式化 Flask/Jinja2 字段
【发布时间】:2018-05-16 20:45:47
【问题描述】:

所以我有一个用 Flask 构建的网站。为了保持页面之间的外观和感觉,我使用 Jinja2 中的宏来呈现字段。我的问题是:如何在每个字段的基础上控制字段宽度?我有几个字段渲染得不够宽,无法显示最终出现在其中的数据。我知道这可以用 CSS 完成,但我想通过模板或 forms.py 只控制某些字段,而不要管其余的。

HTML 模板示例:

{% from "_forms.html" import render_field %}
{% extends "base.html" %}
    {{ render_field(form.createDate) }}
    <br>
    {{ render_field(form.changeID) }}
    <br>
    {{ render_field(form.tasID) }}
    <br>
    {{ render_field(form.implementor) }}
    <br>
    {{ form.submit }}
{% endblock %}

Jinja2 宏:

{% macro render_field(field) %}
  <hr class="forms">
  {{ field.label }}
  {% if field.flags.required %}
    *
  {% endif %}
  <br>
  {{ field(**kwargs)|safe }}
  {% if field.errors %}
    {% for error in field.errors %}
      <span class="flash">{{ error }}</span><br>
    {% endfor %}
  {% endif %}
{% endmacro %}

我在 html 模板中尝试过的示例:

{{ render_field(form.customer, form_type="horizontal", horizontal_columns=('lg', 6, 3)) }}
{{ render_field(form.customer, horizontal_columns=('lg', 2, 6)) }}

【问题讨论】:

    标签: flask macros jinja2


    【解决方案1】:

    最后,答案很简单。

    {{ render_field(form.createDate, size=50) }}
    

    【讨论】:

      【解决方案2】:

      您可以使用input 标记&lt;input type="text" name="email" size="60"&gt; 而不是render_field Jinja2 方法,因此大小属性会更改input 的宽度。但是,您必须进行额外的更改才能使其与您的 Flask 服务器一起使用。

      可能会更容易包含CSS 文件或仅使用嵌入的CSS

      【讨论】:

      • 这基本上就是我现在使用的路线。希望继续使用宏。使维护整个网站的外观和感觉变得更加容易。
      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 2020-07-11
      • 2016-07-27
      • 1970-01-01
      • 2019-09-23
      • 2017-04-18
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多