在Django中预填充非模型表单的方式主要是通过在视图函数中传递值列表到表单的ChoiceField字段中。下面是一个示例代码:
from django import forms
class MyForm(forms.Form):
my_choice = forms.ChoiceField(choices=[])
def __init__(self, *args, **kwargs):
choices = kwargs.pop('choices', None)
super(MyForm, self).__init__(*args, **kwargs)
if choices:
self.fields['my_choice'].choices = choices
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
choices = [('value1', 'Label 1'), ('value2', 'Label 2'), ('value3', 'Label 3')]
form = MyForm(choices=choices)
return render(request, 'my_template.html', {'form': form})
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
在上述代码中,我们首先定义了一个表单类MyForm
,其中包含了一个my_choice
字段,类型为ChoiceField
。在表单类的构造方法中,我们从关键字参数中提取choices
值列表,并将其赋值给my_choice
字段的choices
属性。
然后,在视图函数my_view
中,我们创建了MyForm
的实例,并将值列表作为choices
参数传递进去。最后,将表单实例传递给模板文件进行渲染。
这样,当用户访问该视图函数对应的URL时,表单将会被渲染,并且my_choice
字段将会预填充选项值列表中的选项。用户提交表单后,你可以在视图函数中使用request.POST
来获取用户提交的数据。
推荐的腾讯云相关产品:无
该问题没有特定的腾讯云相关产品与之对应。
领取专属 10元无门槛券
手把手带您无忧上云