Django模板表单字段以无序方式显示

时间:2018-11-01 08:11:01

标签: html django python-2.7 django-forms django-templates

我正在使用Django Form,所以基本上我有四个表单字段,例如:

First Name:
Last Name:
Address:
Contact Info:

此表单数据进入Django模板并渲染,但未按正确顺序显示这些字段。每次刷新页面时,表单字段顺序都会更改。 例: 在首页上加载喜欢的图片

Last Name: 
First Name:
Contact Info:
Address:

在刷新页面顺序时,

Address:
Last Name:
Contact Info:
First Name:

这是我的Django模板表单代码,可在Tempalte中呈现表单:

{% for fields in formset %}
 <div class="row">
   <div class="col-md-12">
     <label class="col-4 control-label">{{fields.label}}
      </label>
     {{fields}}
   </div>
 </div>
{% endfor %}

我的Form.py文件包含以下表单:

class my_info(forms.Form):
    Action = forms.ChoiceField(
        label="First Name",
        widget=forms.Select(attrs={'class': 'form-control'}),
    choices=Action_choice)

    model_id = forms.CharField(
        label ='Last Name',
        widget=forms.TextInput(attrs={'class': 'form-control','type':'hidden'})
    )

    Address = forms.CharField(
        label ='Address',
        widget=forms.TextInput(attrs={'class': 'form-control'})
    ) ,

    Label = forms.CharField(
        label ='Contact Info',
        widget=forms.TextInput(attrs={'class': 'form-control'})
    )

但是我想按正确的顺序显示这些字段。

First Name:
Last Name:
Address:
Contact Info:

2 个答案:

答案 0 :(得分:0)

您可以查看django表单文档中特定版本的django: https://docs.djangoproject.com/en/1.11/topics/forms/#rendering-fields-manually

您可以单独访问每个字段,并通过使用

进行手动渲染
{{ form.field }}}

在模板中,而不是遍历表单集,而是按所需顺序获取它们:

<form method="get">
  {% csrf_token %}
        <div class="row">
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Action.label }}               
                </label>
                {{ form.Action }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.model_id.label }}               
                </label>
                {{ form.model_id }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Address.label }}               
                </label>
                {{ form.Address }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Label.label }}               
                </label>
                {{ form.Label }}
            </div>
        </div>
        <button type="submit" class="btn btn-primary">
            <span class="glyphicon glyphicon-search"></span> Submit
        </button>
</form>

我也建议您在表单字段中使用更多代表名称...

答案 1 :(得分:0)

在forms.py中的'meta'类中,您可能已经在{}中设置了字段。 花括号用于设置的设置。 在[]或()中设置字段选项可以帮助您按所需顺序获得它。

例如:

`class LoginForm(forms.ModelForm):
      username = forms.CharField(help_text='')
      password = forms.CharField(widget=forms.PasswordInput())
      class Meta:
            model = UserRegistration
            fields = ['username','password']`