Python 无法在Django中设置默认表单值
我试图在Django应用程序中为表单字段设置默认值,但我所做的一切似乎都不起作用。我正在使用Django 2.2.3 这是我在Python 无法在Django中设置默认表单值,python,django,django-forms,Python,Django,Django Forms,我试图在Django应用程序中为表单字段设置默认值,但我所做的一切似乎都不起作用。我正在使用Django 2.2.3 这是我在视图.py中的代码: def my_view(request, template_name="path/to/template"): form = MyForm(request.POST, initial={ 'field_one': field_one_default, 'field_two': field_two_default, })
视图.py中的代码:
def my_view(request, template_name="path/to/template"):
form = MyForm(request.POST, initial={
'field_one': field_one_default,
'field_two': field_two_default,
})
try:
if request.method == 'POST':
if form.is_valid():
field_one = form.cleaned_data['field_one']
field_two = form.cleaned_data['field_two']
my_model.field_one = field_one
my_model.field_two = field_two
my_model.save()
return redirect('redirected_page')
return render(request, template_name, {'form': form})
return render(request, template_name, {'form': form})
except Http404 as e:
return Http404("An error occurred.")
class MyForm(forms.Form):
field_one_choices = [
('Choice One', 'Choice One'),
('Choice Two', 'Choice Two'),
('Choice Three', 'Choice Three'),
]
field_one = forms.ChoiceField(choices=field_one_choices, required=True)
field_two = forms.IntegerField(
validators=[MaxValueValidator(100), MinValueValidator(1)],
required=True
)
这是我在表单中的代码。py
:
def my_view(request, template_name="path/to/template"):
form = MyForm(request.POST, initial={
'field_one': field_one_default,
'field_two': field_two_default,
})
try:
if request.method == 'POST':
if form.is_valid():
field_one = form.cleaned_data['field_one']
field_two = form.cleaned_data['field_two']
my_model.field_one = field_one
my_model.field_two = field_two
my_model.save()
return redirect('redirected_page')
return render(request, template_name, {'form': form})
return render(request, template_name, {'form': form})
except Http404 as e:
return Http404("An error occurred.")
class MyForm(forms.Form):
field_one_choices = [
('Choice One', 'Choice One'),
('Choice Two', 'Choice Two'),
('Choice Three', 'Choice Three'),
]
field_one = forms.ChoiceField(choices=field_one_choices, required=True)
field_two = forms.IntegerField(
validators=[MaxValueValidator(100), MinValueValidator(1)],
required=True
)
这是我在模板中的代码:
{% load fontawesome_5 %}
{% load bootstrap4 %}
<div class="container spacing-top">
<form method="post">{% csrf_token %}
{% bootstrap_form form %}
<input class="btn btn-info" type="submit" value="Save">
<a class="btn btn-secondary" href="{% url 'another_page_url' %}">Cancel</a>
</form>
</div>
非常感谢您的帮助!提前谢谢 所以我终于发现了我的错误。阅读报告告诉我以下几点:
这就是为什么仅为未绑定的表单显示初始值。对于绑定表单,HTML输出将使用绑定数据
这篇文档解释了绑定表单和未绑定表单的含义,给出了绑定表单的示例form=NameForm(request.POST)
因此,为了解决发布的问题,我更改了我的视图.py
代码如下:
def my_view(request, template_name="path/to/template"):
form = MyForm(request.POST or None, initial={
'field_one': field_one_default,
'field_two': field_two_default,
})
...