我在将标记硬编码到Django中的模板时遇到问题。我遇到问题的原因是我需要基于正在使用的框架动态生成表单。
该框架(用Python编写)具有一个Web界面(因此是Django),该框架需要框架中每个模块的表单,具体取决于需要提交给该模块的数据。
因此,我试图从模块中获取表单信息(哪些字段,字段的类型,标签等),我目前正在尝试这样做:
#framework/module.py
def form():
forms = '"upload": {"filename": "file","directory": "text"}'
return forms
之所以如此构造它,是因为我试图将这些信息从Django传递到forms.py,以便可以将其转换为Django需要为模板创建输出。
>现在,我已经尝试了几种方法将其添加到模板中。唯一的问题是,我必须创建硬编码到模板中的表单标签。我试图弄清楚如何获取也基于模块提供的信息动态生成的表单标签。因为在同一页面上可能存在需要多个表单的模块。
简而言之,我正在尝试这样做:
{% for f in forms %}
{{f}}
{% endfor %}
代替此:
<form name="upload" action="foo" method="POST">
{{form}}
</form>
在Django中有可能吗?
答案 0 :(得分:0)
您可以在django here is how中手动呈现表单字段。
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
编辑:我没有正确回答问题
您可以在字典中使用表单标记属性,并在这样的结构中遍历表单:
Python:
forms = {
form_object: {"name": "upload", "action": "foo", "method": "POST"}
}
模板:
{% for form, tag_attributes in forms.items %}
<form name="{{tag_attributes.name}}" action="{{tag_attributes.action}}" action="{{tag_attributes.method}}">
Do stuff with your {{form}}
</form>
{% endfor %}