1

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

4

4 回答 4

2

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

你有两种声音的可能性。

  • 不要用你的模板标签渲染任何东西(静默失败)
  • 引发模板错误。

您没有确切地说出您的模板标签在做什么,所以我不能推荐两者中的任何一个,但是使用模板标签做的最正常的事情就是默默地失败。

于 2010-07-01T12:26:44.467 回答
2

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

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

于 2010-07-01T13:01:39.967 回答
1

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

于 2010-07-01T12:55:49.690 回答
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')
于 2010-07-01T12:44:54.920 回答