2017-02-02 9 views
0

は、だから私はこのようになります私のHTMLのフォーム持つ新しいテンプレートをレンダリング:submitボタンがクリックされたときに、私が達成したいものをこのフォームでポストフォームデータは、その後

<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 Submit-- - > www.example.com/printables/printview/)、テンプレートは同じままです。

私はこれで1日か2日間これに執着していますので、どんな助けでも大歓迎です!

EDIT: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

このページ全体を読む必要があります。https://docs.djangoproject.com/ja/1.10/topics/forms/また、投稿されたデータを別のビューで取得したい場合は、モデルが必要であるか、セッションに保存して、次のビューで取得する必要があります。 – cdvv7788

+0

@ cdvv7788ありがとう、私は今読んでいます。他のビューに移動する必要はありません。私の目標は、jQueryによって計算されたデータを別のテンプレートに取得して、データをレンダリングできるようにすることです。私はそれがモデルとセッションなしで可能であると言われました(これは私が避けたかったものです) –

答えて

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) 
+0

これは私の問題を解決しませんが、答えをありがとう。私はまだ正しいURLに変更されたURLを取得していますが、同じテンプレートを読み込み、ビューで宣言されたテンプレートを無視します。 –

+0

@ J.Scullあなたが使用したjqueryコードを貼り付けることができます。データが正しく新しいビューに投稿され、テンプレートを変更したときに、 'Sizer/printdata.html'と' Sizer/printview.html'は異なっています。 – MicroPyramid

+0

質問にjQueryを追加しました –