例如:如果选择了第一个选项Regular,那么如何在views.py中获取值“1”及其文本值“Regular”
<form method = "post" action = "{% url 'index' %}">
{% csrf_token %}
<select name = "drop1" >
<option value="1">Regular</option>
<option value="2">Medium</option>
<option value="3">Large</option>
</select>
<input type = "submit" value="Submit">
3条答案
按热度按时间eqqqjvef1#
值
1
应在键drop1
下以request.POST
为单位。这将帮助您在视图中查看选定的值:
<option>
标记的文本内容不会提交给视图,只会提交value
属性内的文本。这是一个HTML和web浏览器设计;Python或Django不控制POST请求中发送的内容。如果您确实需要在POST请求中获取两个字符串(
1
和Regular
),我过去使用的一种解决方法是复制HTML标记中的文本从而发送值
1-Regular
;然后我在视图中分割了线这不是一个完美的解决方案,但它确实对我有效。
rhfm7lfc2#
我能想到的另一个解决方案(也不使用Django表单)是使用Python
dict
(或list
)在视图中保存所有选项:并基于以下内容渲染模板:
当然,如果您简单地使用django表单,那么所有底层处理都会为您完成,您可以跳过这部分代码。
x6492ojm3#
如果有人陷入相同的场景,并且选择选项来自后端,可以使用
ModelChoiceField
的to_field_name
属性。例如,如果Regular、Medium和Large是ProductSize
模型中名为size
字段的选择,请尝试以下形式:上面的表单将html中的选项呈现为:
您可以简单地在视图中获取这些值。py by
self.request.POST.get("size")
。请参阅文档