python - Django 表单选择字段在渲染后为空

标签 python django

由于某种原因我无法让它工作,所以请帮助我..

我有一个选择字段,下拉菜单中有 3 个选择。我可以第一次选择它们,然后提交。然而,在我点击提交后,我想再次选择,但我的下拉列表变空......我必须刷新页面才能再次显示。为什么? picture1 picture2

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/

相关文章:

python - 如何解释 Sklearn LDA 困惑分数。为什么它总是随着主题数量的增加而增加?

javascript - django 使用模板 View 和 ajax

python - pip: python-ldap - 安装时出现 UnicodeDecodeError

python - 如何在 PyGame 中获取屏幕上每个像素的颜色

python - uwsgi 抛出由 uwsgi_response_write_body_do 损坏的管道引起的 IO 错误

Django Admin Inline FileField 链接在新选项卡中打开

python - 如何在 DRF 中使用基于异步函数的 View ?

Django - 应用过滤器时无法访问对象属性

python - 使用 Python 访问 COM 的返回值

Python 日志记录 : reverse effects of disable()