2015-02-18 8 views
1

Я использую REST Easy в Firefox, чтобы сделать запрос POST простой форме в Django, но это дает мне ошибку 403 «Значок CSRF 2295 отсутствует или неверен».Почему я получаю ошибку 403 «токен CSRF отсутствует» с Django?

Это мой views.py (так как я использую сеть за прокси):

from django.shortcuts import render 
import urllib2 

def home(request): 
    if request.method == 'POST': 
     post = request.POST 
     if 'passkey' in post: 
      if post['passkey'] == '123': 
       proxy = urllib2.ProxyHandler({'http': 'http://070.13095070:[email protected]:80'}) 
       auth = urllib2.HTTPBasicAuthHandler() 
       opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler) 
       urllib2.install_opener(opener) 
       j = urllib2.urlopen(post['url']) 
       j_obj = json.load(j) 
       return HttpResponse(j_obj) 
    else: 
     return render(request, 'packyourbag/home_page.html') 

и мой файл шаблона:

<html> 
    <body> 
     <form id="form" method="post"> 
      {% csrf_token %} 
      url:<input type="text" name="url"/> 
      Pass Key:<input type="text" name="passkey"/> 
      <button type="submit" name="url_post"> 
       Post 
      </button> 
     </form> 
    </body> 
</html> 

Я пропусканием URL и код доступа, и Я не знаю, как передать токен CSRF (я даже не знаю, должен ли я передавать это или нет).

+0

plz также сообщите, какие изменения у меня есть, чтобы сделать в моем коде .... когда я только пишу @csrf_excempt, он дает ошибку - 'name' csrf_excempt 'не определен' .. помогите мне снова PLZ .. :) – aquaman

ответ

0

Вы можете отключить требование CSRF токен, поставив @csrf_exempt до вашего зрения:

Первый импорт декоратора в верхней части views.py:

from django.views.decorators.csrf import csrf_exempt 

Затем украсить ваш взгляд, как:

@csrf_exempt 
def home(request): 

Предупреждение. Это сделает ваш взгляд уязвимым для атак на подделку. См. https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/.

0

Это потому, что вы не передаете токен CSRF с помощью rest-easy. Вы можете сделать, как предложено @Selcuk и обернуть вашу функцию просмотра с @csrf_exempt во время тестирования, или вы можете найти CSRF токен и POST, что с rest-easy

Смежные вопросы