2016-04-10 8 views
1

Django 1.9.5 CSRFトークンは隠しフォームフィールドを追加しません。 RequestContextのでrender_to_requestをしようと、ちょうどデコレータをしようと、レンダリング - いけないものは何も機能しない、隠し入力すると、あなたはrender_to_response()RequestContextを渡していません{%csrf_token%}

home.html

<script> 
$(document).ready(function() { 
    $("#encrypt").click(function() { 
     var postData = { 
      text: $("#input-box").val(), 
      rotate: $("#rotate").val() 
     }; 
     $.post('/encrypt', postData, function (out){ 
      alert(out) 
     }); 
    }); 
}); 
    </script> 
<form name="ciepher" method="POST" action=""> 
      {% csrf_token %} 
<!-- form code--> 
</form> 

views.py

from django.shortcuts import render_to_response, render 
from django.template import RequestContext 
from caesar import models 

def home(request): 
    return render_to_response("home.html") 

def encrypt(request): 
    input_text = request.POST["text"] 
    rotate = request.POST["rotate"] 
    output_text = models.encode(input_text, rotate) 
    frequency = models.get_frequency(input_text) 
    #return render_to_response("home.html", {'input_text': input_text, 'rotate': rotate, 'output_text': output_text, 'frequency': frequency}, context_instance = RequestContext(request)) 
    return render(request,"home.html", {'input_text': input_text, 'rotate': rotate, 'output_text': output_text, 'frequency': frequency}) 

答えて

2

を示しています。

def home(request): 
    return render_to_response("home.html", context_instance=RequestContext(request)) 

それとも、単にrenderショートカットを使用することができます:

def home(request): 
    return render(request, "home.html") 
+0

ああ、そのような簡単なミスをし、そんなに時間がかかったこのような何かにコードを修正します。多くのありがとう、その仕事! –

+1

'render'ショートカットを使ってください –

関連する問題