代码之家  ›  专栏  ›  技术社区  ›  viam0Zah

我可以在django模板标记中提升http404吗?

  •  1
  • viam0Zah  · 技术社区  · 14 年前

    我有一个提供模板标记的django应用程序 profile . 标记接受用户名作为其参数。如果不存在,我该如何处理 User 具有给定用户名的实例?在模板标记内引发HTTP404是否有意义?还是应该简单地将空字典传递给模板?

    4 回复  |  直到 14 年前
        1
  •  2
  •   googletorp    14 年前

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

    你有两种可能。

    • 不使用模板标记呈现任何内容(自动失败)
    • 引发模板错误。

    你不能确切地说出你的模板标签在做什么,所以我不能推荐这两个标签中的任何一个,但是对于模板标签来说,最正常的事情就是默默地失败。

        2
  •  2
  •   lprsd    14 年前

    如果页面是特定于用户的,您应该让用户 @login_required 在呈现该页面之前,这样您就知道该用户存在。

    否则,按照惯例,您应该在模板标记中自动失败。

        3
  •  1
  •   Bartek    14 年前

    您应该在模板中检查 user 变量在显示 profile 标签。

        4
  •  0
  •   viam0Zah    14 年前

    我可以看到两种方式:

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

    {% 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')