我可以在Django模板标签中提升Http404吗?

时间:2010-07-01 11:14:20

标签: django http-status-code-404 templatetags

我有一个提供模板标记profile的Django应用程序。标签接受用户名作为其参数。当没有给定用户名的User实例时,我该如何处理这种情况?在模板标记中提升HTTP 404是否有意义?或者我应该简单地将空字典传递给模板?

4 个答案:

答案 0 :(得分:2)

我认为从模板中提取404是不可能的,如果可以的话,你不应该这样做。你应该将逻辑和表示分开。

你有两种声音可能性。

  • 不要使用模板标记渲染任何内容(无声地失败)
  • 提出模板错误。

你没有确切地说出你的模板标签正在做什么,所以我不能推荐这两个中的任何一个,但最常见的是模板标签,是静默失败。

答案 1 :(得分:2)

如果页面是特定于用户的,那么在呈现该页面之前,您应该让用户@login_required,以便您知道该用户存在。

否则,按照惯例,您应该在模板标签中静默失败。

答案 2 :(得分:1)

在显示user标记之前,您应该在模板中检查profile变量是否存在。

答案 3 :(得分:0)

我可以看到两种方式:

使用带有javascript代码的if语句进行重定向,例如

{% if profile_not_exist %}
   Javascript with redirect
{% else %}
   Generic code
{% endif %}

或者在视图中定义逻辑(更好的方式),比如

def index(request):
   if(profile_not_exist):
      indexTemplate = loader.get_template('404.html')
   else:
      indexTemplate = loader.get_template('index.html')