提问者:小点点

如何将html模板中的下拉值传递到Django中的视图?


我需要将所选选项的值发送到视图的下拉列表中。

我的html代码如下:

  <select name="version" id="version" onchange="location = this.value;">
    <option>Select version to compare with</option>
    {%for ver in version_list%}
    **<option value={{ver}} href="{% url 'process_data' ver %}">{{ver}}</option>**
    {% endfor %}
  </select>

上面给了我以下错误:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/index/11.5.1.18900-96

http://127.0.0.1:8000/index/11.5.1.18900-97


Using the URLconf defined in Piechart_Excel.urls, Django tried these URL patterns, in this order:
admin/
index/
process_data/<str:ver> [name='process_data']

The current path, index/11.5.1.18900-96, didn't match any of these.

但是,如果我发送的值如下,即没有任何下拉:

**<a href="{% url 'process_data' ver1 %}">{{ver}}</a>**

一切都按预期进行。

我的urls.py文件内容如下:

from django.urls import path
from fusioncharts import views

urlpatterns = [
    path('index/', views.index, name='index'),
    path('process_data/<str:ver>', views.process_data, name='process_data'),
] 

有人能说为什么在下拉的情况下不起作用,而在其他情况下起作用? 如果我们必须使用下拉从html模板发送任何值,那么如何这样做呢?

谢了。


共1个答案

匿名用户

你使用一个选项标签内的链接,我认为有更好的方法,然而。。。你可以尝试这个。

<select name="version" id="version" onchange="location = this.value;">
      <option>Select version to compare with</option>
      {%for ver in version_list%}
      **<option value="{% url 'process_data' ver %}">{{ver}}</option>**
      {% endfor %}
  </select>

您可能还必须编辑onchange事件

onChange="window.location.href=this.value"

如果这不起作用,那么你可以转换成链接,然后转换成下拉菜单使用css或css框架。

<ul>
    <li><a href="{% url 'process_data' ver %}">{{ver}}</a></li>
<ul>

完整的下拉示例

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Select version to compare with
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    {%for ver in version_list%}
      <a class="dropdown-item" href="{% url 'process_data' ver %}">{{ver}}</a>
    {% endfor %}
  </div>
</div>

这是假设您导入bootstrap,请参阅以下链接以获得详细信息:https://getbootstrap.com/docs/4.0/gett-started/introduction/https://getbootstrap.com/docs/4.0/components/dropdowns/