Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在Django中设置默认表单值_Python_Django_Django Forms - Fatal编程技术网

Python 无法在Django中设置默认表单值

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, })

我试图在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,
  })

  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,
  })

  ...