2016-11-23 2 views
2

Согласно Django documentation, мы можем установить обработчик ошибок по умолчанию, как это:Как установить обработчик по умолчанию для проверки CSRF в django?

handler403 = 'mysite.views.my_custom_permission_denied_view' 
... 

Мой обработчик для 404 и 500 работает нормально. Но в случае запрета доступа я не могу его активировать (когда я поднимаю HttpResponseForbidden, обработчик-обработчик является обработчиком ошибки 500). Во всяком случае, это не моя проблема. Моя проблема в том, что когда я пытаюсь подделать (для целей тестирования) токен CSRF, он выбрасывает «Запрещено», но опять же, мой обработчик для запрещенного доступа не вызывается - он вызывает шаблон django по умолчанию для запрещенного значения 403. И когда я пытаюсь получить доступ к корневому каталогу static (или media), вызывается страница с запрещенной по умолчанию страницы сервера (apache httpd в моем случае), которая в порядке.

Мой вопрос:

  • Как установить обработчик по умолчанию для "проверки CSRF не удалось"?
  • В каких случаях обрабатывается обработчик 403?
  • Как я могу вызвать 403 запрещенную ошибку?

Вот мои настройки:

  • Python 3.4
  • Джанго 1,10 (производство, отладка = False)
  • Сервер: Apache HTTPD через mod_wsgi
  • Windows 7 32bit

ответ

2

можно сделать в настройках

CSRF_FAILURE_VIEW = 'your_app_name.views.csrf_failure' 

ввиду

def csrf_failure(request, reason=""): 
    ctx = {'message': 'some custom messages'} 
    return render(request, your_custom_template, ctx) 
+0

Работает отлично. Благодарю. – someone

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