带有模板变量替换的额外报价集

时间:2017-01-08 04:03:37

标签: python django forms

我为更新视图编写了这个get_context_data方法:

def get_context_data(self, **kwargs):
    context = super(MyAccountEdit, self).get_context_data(**kwargs)
    context.update({
        'form_title': 'Edit My Account',
        'form_attributes': 'method="post"',
        'form_button_label': 'Save'
    })
    return context

所以我创建/更新了三个上下文变量。但是,当我在浏览器中查看时,表单显示如下:

<form method=""post"">

由于附加引号,表单使用get而不是post,因为它在method=之后将该行解释为空字符串。我在代码中更改了这一行后:

'form_attributes': 'method="post"',

到此:

'form_attributes': 'method=post',

似乎可以将HTML修复为我希望它呈现的方式:

<form method="post">

所以,问题是:为什么模板标签插入以这种方式工作?我有什么误会?我也尝试转义引号并在外面使用双引号。

以下是我的模板的相关部分:

<form {{ form_attributes }}>
  {% csrf_token %}
  <input type="hidden" name="next" value="{{ next }}">
  {{ form.as_p }}
  <button class="button-primary" type="submit">{{ form_button_label }}</button>
</form>

1 个答案:

答案 0 :(得分:0)

这是一个微不足道的错误,但希望将来会有人制作并搜索Stack Overflow。

问题在于我应该使用safe过滤器来确保更换按我原先预期的那样发生。

工作模板部分:

<form {{ form_attributes|safe }}>

这导致我期望的输出:

<form method="post">