我可以在 Django 模板标签中引发 Http404 吗?
我有一个 Django 应用程序,它提供模板标签 profile
。该标签接受用户名作为其参数。当不存在具有给定用户名的 User
实例时,我应该如何处理这种情况?在模板标签内引发 HTTP 404 有意义吗?或者我应该简单地将一个空字典传递给模板?
I have a Django application that provides template tag profile
. The tag accepts a username as its argument. How should I treat the situation when there exists no User
instance with the given username? Does it make sense to raise HTTP 404 inside a template tag? Or should I simply pass an empty dictionary to the template?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为不可能从模板中引发 404,如果可以的话,您也不应该这样做。您应该将逻辑和表示分开。
你有两种声音的可能性。
您没有确切说明您的模板标记在做什么,所以我不能推荐这两者中的任何一个,但使用模板标记最正常的事情就是默默地失败。
I don't think it's possible to raise a 404 from the template, and you shouldn't do it if you could. You should keep the logic and presentation separate.
You have two sound possibilities.
You don't say exactly what your template tag is doing, so I can't recommend any of the two, but the most normal thing to do with a template tag, is to fail silently.
如果页面是特定于用户的,您应该在呈现该页面之前让用户访问
@login_required
,以便您知道该用户存在。否则,按照惯例,您应该在模板标记中默默地失败。
If the page is User specific, you should get the user to
@login_required
before rendering that page, so that you know that the user exists.Otherwise, by convention, you should just fail silently in the template tags.
您应该做的是在显示
profile
标记之前检查模板中是否存在user
变量。What you should do is check within your template if the
user
variable exists before displaying theprofile
tag.我可以看到两种方法:
使用 if 语句和 javascript 代码进行重定向,例如
或者在视图中定义逻辑(更好的方法),例如
I can see two ways:
Use if statement with javascript code to redirect, like
Or define logic in view( better way ), like