为什么在 include 标签提供的模板中使用 django 'with' 标签的变量集被分解成单独的字符串?

Why is the variable set using the django 'with' tag broken into individual strings when using it in a template provided by the include tag?

我正在使用 with 标签声明一个变量 my_var。我在输入框中使用 my_var 作为占位符。只有 my_var 的第一个单词被识别为变量的一部分。如何识别整个字符串?我已经明确地输入 "placeholder='this is a test'" 并且所有的单词都显示为占位符,这让我相信它与使用 django templatetags 而不是占位符本身有关。 This picture shows only the word "Must" being displayed.

    <input type="text" class="form-control" id="username" placeholder="Must" be="" at="" least="" 4="" characters="" long="" (underscore="" period).="">

上面显示my_var被打成碎片,请问有什么问题吗?这是声明 my_var

的代码
    {% with form.username as field %}
            {% with "Must be at least 4 characters long." as my_var%}
                {% include "emp/regfield.html" %}
            {% endwith %}
    {% endwith %}

regfield.html 看起来像这样

    <div id="div_{{ field.name }}" class="form-group">
        <label for="id_{{ field.name }}">{{ field.label }}</label>
       <input type="text" class="form-control" id="{{ field.name }}" placeholder={{ my_var }}>
       <div id="{{ field.name }}_error" class="error_div">
            {{ field.errors }}
       </div>
    </div>

我认为您的模板 {{my_var}} 周围可能遗漏了一些引号 - 更改为 "{{my_var}}"

您可以像这样将参数传递给 include

{% include "emp/regfield.html" with field=form.username my_var="Must be at least 4 characters long." %}

摆脱 with 包装语句。只需使用 include.