Django 1.5:如何显示从视图传递到模板选择的预选值

时间:2015-02-02 11:37:10

标签: django django-templates django-views

这是我的问题:

我正在构建一个显示用户数据的HTML页面。

在注册用户数据页面中,我以这种方式收集数据:

<div class="large-3 columns">
     <label for="pizza">Type of Pizza;
          <select id="pizza" name="pizza" >
                 {% for key, value in pizza.items %}
                      <option value="{{key}}">{{value}}</option>
                 {% endfor %}
          </select>
     </label>
</div>

通过这种方式,用户可以选择他最喜欢的披萨类型。

然后,用户可以在ChangeUserData页面中更改他最喜欢的披萨。

我想在选择字段中显示从我的视图(他最喜欢的披萨)传递的数据,如果用户想要这样做,可以将数据与其他人(一种新类型的披萨)一起更改。 / p>

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您应该使用forms framework。我假设披萨存储在UserProfile模型中。

首先,在应用中创建一个定义表单的forms.py文件:

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ['favorite_pizza', ]

然后,您可以使用UpdateView或某些自定义视图来使用该表单。我们假设我们有一个更新视图:

class UserProfileUpdateView(UpdateView):
    template_name = 'your_template'
    model = UserProfile
    form_class = UserProfileForm

现在,转到模板&#39; your_template&#39;:

<form method='post' action='.'>
    {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' value='Confirm pizza change'/>
</form>

这样,django将根据您在favorite_pizza字段定义中指定的选项呈现选择。此外,这将处理将值设置为用户之前选择的值。

编辑:我建议在注册页面中执行相同的操作。通常,只要您能够处理用户输入

,使用表单框架会更快更安全