В проекте, над которым я работаю, есть некоторые данные, которые необходимо передать каждому представлению, поэтому у нас есть обертка вокруг render_to_response
, называемая master_rtr
. Хорошо.
Теперь мне нужно пройти через наши 404 страницы. В соответствии с инструкциями , я создал собственный обработчик 404 (умно названный custom_404
), который вызывает master_rtr. Все выглядит хорошо, но наши тесты не пройдены, потому что мы получаем обратно 200 OK.
Итак, я пытаюсь выяснить, как вернуть код состояния 404. , кажется, класс HttpResponseNotFound, это своего рода то, что я хочу, но я не совсем уверен, как построить всю эту ерунду вместо использования render_to_response
Или, скорее, я мог бы понять это, но кажется, что их должно быть проще; там есть?
Соответствующие части кода:
def master_rtr(request, template, data = {}):
if request.user.is_authenticated():
# Since we're only grabbing the enrollments to get at the courses,
# doing select_related() will save us from having to hit database for
# every course the user is enrolled in
data['courses'] = \
[e.course for e in \
Enrollment.objects.select_related().filter(user=request.user) \
if e.view]
else:
if "anonCourses" in request.session:
data['courses'] = request.session['anonCourses']
else:
data['courses'] = []
data['THEME'] = settings.THEME
return render_to_response(template, data, context_instance=RequestContext(request))
def custom_404(request):
response = master_rtr(request, '404.html')
response.status_code = 404
return response