Я создал собственный обработчик404 для аутентифицированного сайта Django, чтобы избежать утечки информации.
def check_logged_in_404(request):
""" Custom 404. Show friendly 404 when logged in and redirect to /login
when not logged in.
"""
if request.user.is_authenticated():
return render_to_response('404.html')
else:
return HttpResponseRedirect('/login')
Функционально он делает именно то, что я хочу. Однако страница возврата 404 имеет статус 200, что является правильным с точки зрения кода. Но это, очевидно, должен быть статус возврата 404.
Повышение404 не работает, потому что, если оно не заканчивается бесконечной рекурсией, оно возвращается сюда и, следовательно, приводит к той же проблеме.
Я попробовал HttpResponseNotFound, но он принимает в качестве аргумента только строку, а не шаблон, что не относится к DRY-ишу.
И я вручную попытался установить заголовок с помощью:
response = render_to_response('404.html')
response['Status'] = "Not Found - 404"
return response
Тогда заголовок статуса действительно установлен, но браузер все еще показывает 200.
У меня нет выбора .. У кого есть советы, пожалуйста, будьте моим героем ...:)
Спасибо и всего наилучшего,
Gerard.
Редактировать : Я попробовал значение поля состояния во всех сортировках, но не повезло: (