python - django 无法渲染表单

标签 python django forms

我是 Django 新手。 看看我的form.py中的以下代码:

class ProfileForm(forms.Form):
    name = forms.CharField(label=_("first name"))
    lname = forms.CharField(label=_("last name"))
    phone= forms.CharField(label=_("phone"))
    address = forms.CharField(label=_("address"))

    def categorize_fields(self):
        categorized_fields = [
        [ self.fields["name"], self.fields["lname"]  ] ,
        [ self.fields["phone"], self.fields["address"]  ]
        ]
        return categorized_fields

在我的表单渲染中,我有以下代码无法正常工作:

  {% for field_set in form.categorize_fields %}
         {% for field in field_set %}
             {{ field.label }}
             {{ field }}
         {% endfor %}
 {% endfor %}

field.label 工作正常,但 {{ field }} 未显示渲染的 HTML,而是显示以下内容:

<django.forms.fields.CharField object at 0x000012661591CA90> 

但是如果我迭代传递给 form_render.html 的主表单,一切都会正常工作:

    {% for field in form.visible_fields %}
        {{ field.label_tag }}
        {{ field }}
    {% endfor %}

我该如何解决这个问题? 谢谢

最佳答案

self.fields 包含对未绑定(bind)字段对象的引用。如果你想访问实际绑定(bind)的字段,你需要直接在 self 上建立索引:

categorized_fields = [
    [ self["name"], self["lname"]  ] ,
    [ self["phone"], self["address"]  ]
]

但是,我不建议这样做。相反,请使用第三方库,例如 django-crispy-forms .

关于python - django 无法渲染表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47305179/

相关文章:

python - 使用 cursor.mogrify 将元组列表中的行插入数据库会出错

python - Keras LSTM 模型无法学习

python - Django:必须使用对象 pk 或 slug 调用通用详细 View

python - Django更新MySQL数据库涉及外键的问题

php - 这段代码中定义的表单的 `submit()` 函数在哪里?

javascript - 在react.js中使用Enter键和 "@material-ui/core/Button"提交表单

Python + Cassandra 1.2 自动建表

python - 我怎样才能让 Django 返回 JsonResponse 而没有额外的引号或引号转义?

jquery - 通过 $.ajax 请求表单仅返回表单元素

python - Selenium 文本不起作用