python - 无法在视图函数中获取表单数据:Django
问题描述
我需要通过下拉菜单和提交按钮将字符串提交给视图函数。
在我的模板中,我有:
<form action="{% url 'exec_task' %}" method="post">
{% csrf_token %}
<select id="select_task" form="select_task" name="select_task">
{% for task in available_tasks %}
<option id="selected_task" value="{{ task }}">{{ task }}</option>
{% endfor %}
</select>
<input class="button" type="submit" value="Run Selected Task">
</form>
在我看来,我有:
def exec_task(request):
if request.method == 'POST':
task = request.POST.get('select_task')
print(task)
getattr(tasks, task)(0)
return redirect('management')
print(task) 始终显示为 None,当我尝试通过下一行中的 getattr 调用它时会产生错误。
我已经阅读了我可以找到的所有问题和教程,但我不知道我做错了什么,但是当我打印 request.POST 对象时,我得到的只是 csrf 令牌。QueryDict 中没有其他内容。
有任何想法吗?
解决方案
如评论中所述,请删除
form="select_task"
从选择标签。
所以最终的选择标签/ html将是。
<form action="{% url 'exec_task' %}" method="post">
{% csrf_token %}
<select id="select_task" name="select_task">
{% for task in available_tasks %}
<option id="selected_task" value="{{ task }}">{{ task }}</option>
{% endfor %}
</select>
<input class="button" type="submit" value="Run Selected Task">
</form>
推荐阅读
- azure-api-management - 从 set-body 中的 if 语句访问 MatchedParameters
- mathjax - 剧透中的 Mathjax 延迟渲染代码
- sap-cloud-sdk - 为 S/4HANA On-premise 2020 预生成的类型安全客户端库不可用
- liferay - Kaleo 工作流程:多个通知 onEntry
- r - 从 R 中的循环输出创建向量
- reactjs - 如何更改反应滑动按钮中显示的“解锁”默认文本
- c - 在 C 中做 case a ... z 的便携式方法
- performance - 时间复杂度 (Big O) - 当我们有 2 个嵌套的 FOR 循环时,N 的值能否决定时间复杂度是 O(1) 还是 O(N)?
- python - 在 Word2vec 模型中获取所有单词及其相似词列表的最快方法是什么?
- javascript - 使用 javascript 选择查找范围之间的 json 对象