2015-12-16 5 views
0

мой взгляд функция для метода PUT является:Джанго - метод PUT - Запрещено (CSRF печенье не установлен.):

return JsonResponse ({}) 

Использование HttpRequester (аддон для Firefox)

я получаю подтверждение CSRF не удалось , Запрос прерван.

печать (запрос) дают следующий результат:

Forbidden (CSRF cookie not set.): /test/src/4213 

Я не знаю, что я должен делать. Не могли бы вы мне помочь, пожалуйста ?

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^test/src/(\d+)', MyView.as_view(), name='put_'), 
] 

class MyView(View): 
    .... 
    def put(self, request, *args, **kwargs): 
      print(request) 
      return JsonResponse({}) 

У меня нет формы, поэтому я не могу включить {% csrf_token%}. У меня нет html-файла. Я пытаюсь проверить его с помощью HttpRequester (firefox addon)

+0

Вы отправляете форму? – theamateurdataanalyst

+0

можете ли вы поделиться urls.py и view.py, чтобы лучше понять, как все работает? – DhiaTN

+0

Я отредактировал мое первое сообщение. Посмотрите снова и снизу. – user40545

ответ

1

Удостоверьтесь, что если вы отправляете форму {%csrf_token%} в качестве скрытого ввода в вашу форму.

Кроме того, проверьте, чтобы убедиться, что CsrfViewMiddleware в вашем MIDDLEWARE_CLASSES в settings.py

+0

Я отредактировал мое первое сообщение. Посмотрите еще раз и внизу этого. – user40545

0

Если эта точка зрения не для формы, но и получить доступ непосредственно то, что вы можете удалить CSRF проверки с csrf_exempt декоратора:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^test/src/(\d+)', csrf_exempt(MyView.as_view()), name='put_'), 
] 
+0

Вопрос не в форме, ни в ajax, OP запрашивает расширение Firefox. Так как в любом REST API (см., Например, DRF), csrf можно отключить. Но, да, это должно было пойти с более подробными объяснениями. – jmbarbier

+0

Вы правы, это REST API. Должен ли я отключить csrf? Как это сделать ? – user40545

+0

См. Обсуждение в [DRF] (http://www.django-rest-framework.org/topics/ajax-csrf-cors/). Вы можете удалить представление CSRF для каждого представления, если это смешанная среда, но только если это представление REST api должно быть доступно с помощью сеанса аутентификации, который НЕ основан на сеансе. И как это сделать, это '@method_decorator (csrf_exempt)' – jmbarbier