Django生成表单标记而不是硬编码它们

2024-09-19 20:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有问题,必须硬编码到Django模板的标签。我有问题的原因是我需要基于我正在处理的框架动态生成表单

这个框架(用Python编写)有一个webinterface(因此是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可能吗


Tags: 模块djangopyform框架模板信息表单
1条回答
网友
1楼 · 发布于 2024-09-19 20:49:29

您可以在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 %}

相关问题 更多 >