【发布时间】:2011-01-19 11:24:49
【问题描述】:
我正在处理的项目有一些数据需要传递给每个视图,所以我们有一个围绕render_to_response 的包装器,称为master_rtr。好的。
现在,我也需要我们的 404 页面来运行它。根据the instructions,我创建了一个调用master_rtr 的自定义404 处理程序(巧妙地称为custom_404)。一切看起来都不错,但我们的测试失败了,因为我们收到了 200 OK。
所以,我正在尝试找出如何返回 404 状态码。 seems to be 有一个我想要的 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
【问题讨论】:
标签: django http-status-code-404