当我在带有引导程序的python django中使用select form-control时出现MultiValueDictKeyError

时间:2019-06-07 13:32:22

标签: python django bootstrap-4

当我尝试在模板中使用选择表单控件向视图中输入一些选定的值时,返回webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { Uri parsedUri = Uri.parse(view.getUrl()); WebView newWebView = new WebView(view.getContext()); view.addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); PackageManager packageManager = getPackageManager(); Intent browseIntent = new Intent(Intent.ACTION_VIEW).setData(parsedUri); if (browseIntent.resolveActivity(packageManager) != null) { startActivity(browseIntent); return true; } return true; } }); ,但是当我尝试使用不带选择字段的相同输入时,不会出现错误。

带有选择的代码并返回MultiValueDictKeyError

MultiValueDictKeyError

不返回错误的代码,我只是更改了这一部分:

{% extends 'base.html' %}

{% block main %}

Edit


<form method="POST">
    {% csrf_token  %}

    <label for="descricao">Data Inicial:</label>
    <input id="descricao" type="text" name="descricao" value="{{ descricao }}" class="form_datetime" /><br>
    <script type="text/javascript">
        $(".form_datetime").datetimepicker({ format: '03/01/19 08:00' });
    </script>
    <label for="descricao2">Data Final:</label>
    <input id="descricao2" type="text" name="descricao2" value="{{ descricao2 }}" class="form_datetime" /><br>
    <script type="text/javascript">
        $(".form_datetime").datetimepicker({ format: '03/01/19 09:00' });
    </script>
    <label for="inputUnidades">Selecione unidade</label>
    <select class="form-control" id="inputUnidades" name="inputUnidades">
    {% for item_unidade in unidade2 %}
    <option value="{{ item_unidade }}">{{ item_unidade }}</option>
    {% endfor %}
    </select>
    <input type="submit">



    {% if descricao != None %}
    <br><br>
    <p>

        Data Inicial: {{ descricao }}<br>
        Data Final: {{ descricao2 }}<br>
        Unidade:{{ item_unidade }}
        Tabela:{{ passar|safe }}


    </p>
    {% endif %}

    <a href="{% url 'graficos' %}" class="btn btn-primary">Grafico2</a>
    <a href="{% url 'tela_graficos' %}" class="btn btn-primary">Grafico</a>
</form>
{% endblock %}

为此工作,我不知道为什么用select返回错误:

 <label for="inputUnidades">Selecione unidade</label>
    <select class="form-control" id="inputUnidades" name="inputUnidades">
    {% for item_unidade in unidade2 %}
    <option value="{{ item_unidade }}">{{ item_unidade }}</option>
    {% endfor %}
    </select>

我的views.py:

    <label for="item_unidade">item_unidade:</label>
    <input id="item_unidade" type="number" name="item_unidade" value="{{ item_unidade }}" class="number" /><br>
    <input type="submit">

2 个答案:

答案 0 :(得分:0)

请更改此:

<label for="inputUnidades">Selecione unidade</label>
<select class="form-control" id="inputUnidades">
    {% for item_unidade in unidade2 %}
    <option>{{ item_unidade }}</option>
    {% endfor %}
</select>

由此:

  <label for="inputUnidades">Selecione unidade</label>
    <select class="form-control" id="inputUnidades" name="inputUnidades">
        {% for item_unidade in unidade2 %}
        <option>{{ item_unidade }}</option>
        {% endfor %}
    </select>

别忘了使用属性 name 来获取Django的值,而不用 id

更新:

不要忘记将值添加到选项示例中:

<select class="form-control" name="mySelect" id="mySelect">
{% for product in product_list %}
<option value="{{ product.pk }}">{{ product.name }}</option>
{% endfor %}
</select>

答案 1 :(得分:0)

您的代码段之间的区别-有效的代码段和无效的代码段是输入控件名称名称用作POST请求传递的字典中的键。

您要在“选择”版本中调用条目inputUnidades,在“输入”版本中调用item_unidade-并且视图代码在此行中占用item_unidade

    item_unidade = request.POST['item_unidade']

(而且,由于其他答案的提示,您似乎已经在中途编辑了代码-永远不要这样做-因为您可以破坏整个答案,然后变得毫无意义。要讨论尚不可行的建议解决方案,请使用“注释”,或者(如果需要)编辑您的问题,但在问题的 end 中添加新信息。请勿更改其他人正在审阅并以其答案为基础的代码。当我开始此答案时,没有name标记-现在只是名称不正确,但我不得不重写答案)

尝试仅使用此:

 <label for="inputUnidades">Selecione unidade</label>
    <select class="form-control" id="inputUnidades" name="item_unidade">
    {% for item_unidade in unidade2 %}
    <option value="{{ item_unidade }}">{{ item_unidade }}</option>
    {% endfor %}
    </select>