【发布时间】:2017-02-02 18:41:14
【问题描述】:
我在 Dajngo (1.10) 模板中有一个隐藏表单,我想将数据传递给 views.py。我按照通常的方式但是获取数据的结果是什么。你能告诉我出了什么问题以及如何解决它吗?非常感谢。代码如下供参考:
模板:
<form style="display: hidden" action="/exRpt/" method="POST" id="#form99">
{% csrf_token %}
<input type="hidden" id="var199" name="var199" value=""/>
<input type="hidden" id="var299" name="var299" value=""/>
</form>
<script>
$(document).on('click', '.exWord', function(){
$("#var199").val("ExWord");
$("#var299").val("1,4,10");
$("#form99").submit();
window.location.href = "/exRpt/"
});
</script>
views.py:
def exRpt(request):
in_type = request.POST.get('var199')
in_news = request.POST.get('var299')
...
response = HttpResponse(f.getvalue(), content_type='application/vnd.ms-word')
response['Content-Disposition'] = 'attachment; filename=SelectedNewsReport.docx'
return response
【问题讨论】:
-
我认为您的脚本没有在该代码中执行,因此表单没有获取这些值。
-
您不应在表单 ID 中包含
#:<form style="display: hidden" action="/exRpt/" method="POST" id="form99"> -
@Alasdair 是对的。您的 JS 代码没有选择表单,因此您没有发布到视图。这是一个获取请求(来自您的
window.location.href语句,如果提交工作正常,您不应该需要它)。要确认您可以在查看功能中打印出request.method。更新@alasdair 提到的 ID,它应该可以正常工作。 -
请不要在模板中使用硬编码的url,而是使用
{% url %}标签 -
感谢所有 cmets。是的,愚蠢的我。我不应该把 # 放在表格 id 中!现在它可以工作了。
标签: javascript python django forms