我有三个下拉选择框,由于尺寸=''选项,我必须为了网络可见性而展开。如果我从每个框中选择一个选项,我没有收到任何错误,但如果我在没有选择的情况下留下一个或多个框,则会收到错误:
<select id="pathology_id" name="pathology_id" size="5">
{% for pathology in pathology_list %}
<option value="{{ pathology.id }}">{{ pathology.pathology }}</option>
{% endfor %}
</select>
<select id="commodity_id" name="commodity_id" size="5">
{% for commodity in commodity_list %}
<option value="{{ commodity.id }}">{{ commodity.commodity }}</option>
{% endfor %}
</select>
<select id="technology_id" name="technology_id" size="5">
{% for technology in technology_list %}
<option value="{{ technology.id }}">{{ technology.technology }}</option>
{% endfor %}
</select>
ERROR:
MultiValueDictKeyError
Exception Value:
"Key 'pathology_id' not found in <QueryDict: {u'q': [u''],
如何编码视图以接受没有选择的下拉框?
答案 0 :(得分:1)
如果您的任何列表为空,则可以使用if语句包围for循环。
例如,
{% if technology_list %}
{% for technology in technology_list %} {{ technology.technology }} {% endfor %}
{% endif %}
最后,在视图中,您可以查看已过帐项目是否在请求词典中。
if 'technology' in request.POST:
tech = request.POST['technology']
- - - - 的更新强> -----
首先,您应该使用django forms来执行此操作。其次,您应该使用stackoverflow来询问具体问题。您不应该将其用作修复代码的方法。
最后,似乎会抛出以下行的错误:
pathology_id = request.GET['pathology_id']
问题是密钥'pathology_id'不在GET字典中。如果您有此字段的默认值,则可以执行以下操作:
pathology_id = 'default_value'
if 'pathology_id' in request.GET:
pathology_id = request.GET['pathology_id']
否则,如果您没有默认值,显然无法获取没有ID的Pathology对象。然后,当没有选择任何内容时,您将必须处理该案例。
if 'pathology_id' in request.GET:
pathology_id = request.GET['pathology_id']
#rest of your code
else:
#code when no pathology_id is selected