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