2

我有三个下拉选择框,出于网络可见性的原因,我必须使用 size='' 选项扩展它们。如果我从每个框中选择一个选项,我不会收到错误,但如果我留下一个或多个框没有选择,我会收到错误:

<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''],

如何对视图进行编码以接受没有选择的下拉框?

4

1 回答 1

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 表单来执行此操作。其次,您应该使用 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
于 2009-05-30T14:51:57.597 回答