由于某种原因我无法让它工作,所以请帮助我..
我有一个选择字段,下拉菜单中有 3 个选择。我可以第一次选择它们,然后提交。然而,在我点击提交后,我想再次选择,但我的下拉列表变空......我必须刷新页面才能再次显示。为什么?
views.py:我把表单放在里面,因为它很短
def home(request):
class My_form(forms.Form):
my_choices = [('TEST', 'TEST'), ('ABC', 'ACB'), ('XZY', 'XZY')]
symbol=forms.ChoiceField(choices=my_choices)
if request.method == 'POST':
test_form = My_form(request.POST)
if test_form.is_valid():
symbol = test_form.cleaned_data['symbol']
return render(request, 'blog/home.html',{'symbol':symbol})
else:
messages.error(request, "Error")
else:
test_form = My_form()
return render(request, 'blog/home.html', {'test_form':test_form} )
模板:
{% extends "blog/base.html" %}
{% block content %}
<form width="600px" action="." method="post" >{% csrf_token %}
<div class="row align-items-start">
<div class="col-sm-5">
<label for="symbol">Stocks</label>
<select class="form-control" id="symbol" name ="symbol">
{% for key in test_form.symbol %}
<option >{{key}}</option>
{% endfor%}
</select>
{{ test_form.errors }}
{{ test_form.non_field_errors }}
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
{% endblock content %}
最佳答案
我认为在函数的 POST 部分中,在返回行中,您不会将表单返回到上下文,因此在成功 POST 后,模板没有任何要呈现的表单。在 POST 的返回行中尝试类似的操作:
返回渲染(请求,'blog/home.html',{'symbol':symbol,'test_form':test_form})
关于python - Django 表单选择字段在渲染后为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633052/