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