【问题标题】:django unable to render formdjango 无法呈现表单
【发布时间】:2017-11-15 10:37:33
【问题描述】:

我是 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 %}

我该如何解决? 谢谢

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    self.fields 包含对未绑定字段对象的引用。如果要访问实际绑定的字段,则需要直接在self 上进行索引:

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 2015-10-22
      • 2016-12-06
      • 2022-11-12
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多