我正在学习Django,如果不是来自特定登录用户的请求,我想通过提高404来保护某些页面。
我已经向用户提及了主题。这是保护主题页面的代码。
@login_required
def topic(request, topic_id):
topic = Topic.objects.get(id=topic_id)
if topic.owner != request.user:
raise Http404
我想知道是否有更好的方法来保护很多页面,所以不必在每个函数中都添加相同的代码?
答案 0 :(得分:2)
如果您确实想提高404,更快的方法是让用户检查查询本身的一部分-然后您可以使用get_object_or_404
shortcut:
topic = get_object_or_404(Topic, id=topic_id, owner=request.uset)