首页 > 解决方案 > 使用基于类的视图处理表单时字典的初始值

问题描述

我在 Django 文档站点中阅读了基于类的视图页面,并偶然发现了以下代码示例:

from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views import View

from .forms import MyForm

class MyFormView(View):
    form_class = MyForm
    initial = {'key': 'value'}
    template_name = 'form_template.html'

    def get(self, request, *args, **kwargs):
        form = self.form_class(initial=self.initial)
        return render(request, self.template_name, {'form': form})

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            # <process form cleaned data>
            return HttpResponseRedirect('/success/')

        return render(request, self.template_name, {'form': form})

我的问题是为什么我应该创建initial = {'key': 'value'}字典。

标签: pythondjango

解决方案


initial属性不是强制性的。它的默认值是一个空字典。如果您想在表单中预填充字段,您会使用它,可能是因为大多数用户会选择它。例如,如果您有一个名为 的字段country,您可以设置initial = {'country':'USA'}为在呈现视图时为用户填充该字段。


推荐阅读