手动渲染MultiValueField的子字段

问题描述 投票:6回答:1

在我的Django 1.7应用程序中,我正在尝试利用MultiValueField类来实现密码/确认密码表单元素,即两个单独的密码字段,要求用户输入然后确认新密码。我已经在我的表单上使用了两个单独的字段和clean()方法,但“单个”MultiValueField似乎是维护DRY原则的更好方法,特别是因为我不仅需要在我的用户注册表单中复制它,但是当用户想要更改密码时。

但是,我的前端非常具体,而且不像Django的默认表单输出,所以我是manually rendering my form fields。这很有效 - 直到我进入MultiValueField。对于每个表单字段,我的HTML如下所示:

<div class="row collapse">                                                                                                                                                                                                                                    
    <div class="small-2 columns">                                                                                                                                                                                                                             
        <span class="prefix"><i class="fi-mail"></i></span>                                                                                                                                                                                                   
    </div>                                                                                                                                                                                                                                                    
    <div class="small-10  columns {% if form.email.errors %}error{% endif %}">                                                                                                                                                                                
        {{ form.email }}                                                                                                                                                                                                                                      
        {% if form.email.errors %}<small class="error">{{ form.email.errors }}</small>{% endif %}                                                                                                                                                             
    </div>                                                                                                                                                                                                                                                    
</div>

我需要对form.password的每个子字段进行类似的格式化,但是我尝试过的任何东西都没有给我一个渲染的子字段;我最接近的是我的模板中的{{ form.fields.password.fields.0 }},它给我输出像<app.fields.PassField object at 0x7fb619821ef0>,但这显然不是渲染的表格字段。

是否有一些简单而明显的东西让我失踪,或者我正在努力做的只是在Django中不可能做到的?

django python-3.x django-forms django-templates
1个回答
0
投票

正如farthVader建议的那样,Render only one part of a MultiWidget in Django中的代码适合您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.