嗨,我是编程新手,需要您的帮助。我有一个浮动字段的字段列表,每个字段应显示不同的默认值。
我想通过在模板中进行修改来更改默认属性,但是它不起作用。
<div class="form-group">
{% for entry in form.pde_parameters %}
{% set entry.default=pde_parameter_value_list[loop.index0]%}
{{ pde_parameter_list[loop.index0] }}
{{ entry.hidden_tag() }}
{{ render_field(entry.parameter_value) }}
{% endfor %}
</div>
class NewModelParameterMaskForm(FlaskForm):
parameter_value = FloatField("")
class Solution(FlaskForm):
pde_parameters = FieldList(FormField(NewModelParameterMaskForm), min_entries=1)
sde_parameters = FieldList(FormField(NewModelParameterMaskForm), min_entries=1)
我收到此错误消息: jinja2.exceptions.TemplateRuntimeError:无法在非命名空间对象上分配属性
答案 0 :(得分:0)
您需要先填写表格 ,然后再将其传递给Jinja,而不是模板内部。
def show_solution():
form = Solution(request.form)
if form.validate_on_submit():
# Use form values
return redirect(url_for('done'))
for s in solutions(): # Fetch your solutions from somewhere
form.pde_paramaters.append_entry({'parameter_value': s.float_value})
return render_template('solution.html', form=form)
答案 1 :(得分:0)
我收到了同样的错误。在问题的情况下,我找到的解决方案看起来与此类似:
{% set update_result = entry.update({'default': pde_parameter_value_list[loop.index0]}) %}
然后忽略update_result
变量并正常使用entry
。
Jinja似乎不允许直接设置对象内字段/属性的值。但是,如果这些是字典或列表,则可以使用update
或append
之类的方法,因为它们会在内部更改对象。