所以我的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提交---&gt; 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)
答案 0 :(得分:1)
您可以在printView中渲染输出。无需编写其他视图。将printView更改为
def printView(request):
to_print = str(request.POST.get('vals'))
template = "Sizer/printdata.html"
context = {'all_data':to_print}
return render(request, template, context)