发布表单数据然后呈现新模板

时间:2017-02-02 13:22:15

标签: html django forms post

所以我的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)

1 个答案:

答案 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)