繁体   English   中英

我无法在模板上进行迭代

[英]I can't iterate on the template

我有一个可变字典,其中包含我所有的表格,我想在模板上进行迭代以显示我在词典中拥有的所有表格,而无需像{{example_form}}那样对其进行硬编码,这是我的代码

{% extends 'prescription_menu.html' %}
{% load bootstrap3 %}
{% load crispy_forms_tags %}

{% block title %}Physicians{% endblock title %}

{% block container %}
{% csrf_token %}
<div class="row">
    <div class="col-md-offset-2 col-md-8">
        {% for form in forms %}
            {{form}}
        {% endfor %}

    </div>
</div>
{% endblock container %}

这是我的看法

def UpdatePhysician(request,id):

forms = {}
physician = get_object_or_404(Physician, id=id)
employee = get_object_or_404(Employee, id=physician.employee.id)
person = get_object_or_404(Person, id=employee.person.id)
try:
    address = get_object_or_404(Address, id=return_id(str(person.addresses.values('id'))))
    address_form = AddressForm(request.POST or None, instance=address)
    forms.update({'address_form': address_form})
except:
    address = None
email = get_object_or_404(Email, id=return_id(str(person.emails.values('id'))))
phone = get_object_or_404(PhoneNumber, id=return_id(str(person.phone_numbers.values('id'))))

person_form = PersonForm(request.POST or None, instance=person)
employee_form = EmployeeForm(request.POST or None, instance=employee)
physician_form = PhysicianForm(request.POST or None, instance=physician)
email_form = EmailForm(request.POST or None, instance=email)
phone_form = PhoneForm(request.POST or None, instance=phone)

forms.update({'person_form': person_form,
              'physician_form': physician_form,
              'employee_form': employee_form,
              'email_form': email_form,
              'phone_form': phone_form,
              })



return render(request, 'UpdatePhysician.html',forms)

它不会引发任何错误,只是不显示任何内容,例如,当我键入{{person_form}} ,我会得到所需的表单。

您需要将表单添加到列表中:

form_list = [person_form, physician_form, employee_form, email_form, phone_form]

并将其添加到上下文字典中,在这种情况下, forms字典就是context字典:

forms.update({'forms': form_list})

然后在你的模板中:

{% for form in forms %}
    {{form}}
{% endfor %}

您的forms变量是dict 因此,您必须在模板中遍历一个数字:

{% for name, form in forms.items %}
   {{form}}
{%endfor%}

在视图中,您必须将最后一行更改为

return render(request, 'UpdatePhysician.html', {'forms': forms)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM