【发布时间】:2017-06-19 14:12:03
【问题描述】:
所以我的 HTML 中有一个如下所示的表单:
<form id="passer" method="POST" action="{% url 'Sizer:printView' %}">
{% csrf_token %}
<input type="hidden" id="vals">
<input type="submit" value="Print all selected items" id="printBut">
</form>
使用此表单我希望实现的是,当单击提交按钮时,我的 jQuery 将计算一个值并将其放入表单中的 vals 字段中,然后我希望它发布到 printView 视图(以获取计算的数据到视图中),然后在数据发布后渲染一个新模板并传入由 jQuery 计算的数据。
我的 printView(发布数据的地方)如下所示:
def printView(request):
to_print = str(request.POST.get('vals'))
template = "Sizer/printview.html"
context = {'to_print':to_print}
return redirect('requested_print_data', to_print)
我的 requested_print_data 视图(我想在其中呈现我的新模板)如下所示:
def requested_print_data(request):
all_data['to_print'] = #Dont know how to get my variable
template = "Sizer/printdata.html"
context = {'all_data':all_data}
return render(request, template, context)
所以目前发生的情况是,当表单提交时,值被计算并存储到表单中,URL 将从它发布的地方获得额外的部分(www.example.com/printables ---On提交---> www.example.com/printables/printview/) 但模板将保持不变。
我已经坚持了一两天了,所以任何帮助都将不胜感激!
编辑:根据要求使用 jQuery:
$('#passer').submit(function(){
console.log("Inside click");
var selected = [];
var $vals = "";
$('.datatable').find('input[type="checkbox"]:checked').each(function(){
selected.push($(this).attr('value'));
});
$.each(selected, function(index, val){
$vals+= val + ',';
});
console.log($vals)
$("#vals").val($vals)
【问题讨论】:
-
你应该阅读整页docs.djangoproject.com/en/1.10/topics/forms。此外,如果您想在另一个视图中获取发布的数据,您将需要一个模型或将其存储在会话中并在下一个视图中检索它。
-
@cdvv7788 谢谢,我现在就通读一遍。它不必转到另一个视图,我的目标是将 jQuery 计算的数据放入另一个模板中,这样我就可以用它渲染一些数据。有人告诉我,没有模型和会话是可能的(这是我想避免的)