我需要将所选选项的值发送到视图的下拉列表中。
我的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模板发送任何值,那么如何这样做呢?
谢了。
你使用一个选项标签内的链接,我认为有更好的方法,然而。。。你可以尝试这个。
<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/