在Django Web应用程序上工作时,我发现了一个奇怪的实例。
我有一个选项列表,希望用户从下拉列表中选择。为此,我使用了Django表单中的ChoiceField。但是,当我的选项仅包含单个2元组时(例如(((“ 1”,“ one”))无效),则不显示任何内容,并且出现错误“没有足够的值可解包(预期2,得到1)”在index.html中的builds.as_p行中。一旦我添加了至少一个另外的2元组(例如(((“ 1”,“一个”),(“ 2”,“两个”))有效)到我的选项,它就固定了。可能是什么原因造成的?
forms.py
class BuildForm(forms.Form):
OPTIONS = (("1", "One"), ("2", "two"))
Build_IDs = forms.ChoiceField(choices=OPTIONS)
views.py
from .forms import BuildForm
def index(request):
builds = BuildForm()
return render(request, 'ReportGenerator/index.html', {"builds":builds})
templates / App / index.html
{% if builds %}
<h2>Pick a Build</h2>
<form method="POST" class="build-form">{% csrf_token %}
{{ builds.as_p }}
</form>
{% else %}
<p>No reports are available.</p>
{% endif %}
答案 0 :(得分:0)
您使用了错误的元组语法。
(("1", "one"))
无效,但是(("1", "one"), )
(注意逗号)有效。为了避免歧义,需要使用逗号。例如,当您执行1 + (1)
时,如果没有逗号(1)
,则可能是一个元组,或者括号内可能只有1个。逗号解决了这个问题。