gpt4 book ai didi

django - 干燥 Django View request.user 对象

转载 作者:行者123 更新时间:2023-11-30 23:49:06 24 4
gpt4 key购买 nike

我正在构建一个 Web 应用程序,我发现在检查 request.user 是否与创建电影的用户匹配时有很多重复。电影对用户有 FK,因此只有创建特定电影的用户才能对其执行适当的操作。

@login_required
def edit_movie(request, slug, template_name="movies/edit_movie.html"):
movie = get_object_or_404(Movie, slug=slug)
if movie.user != request.user:
raise HttpResponseForbidden
# Rest of code omitted for brevity.

@login_required
def edit_screener(request, slug, template_name="movies/edit_screener.html"):
movie = get_object_or_404(Movie, slug=slug)
movie_media = movie.moviemedia_set.get(movie_type='screener')
if movie.user != request.user:
raise HttpResponseForbidden()
# Rest of code omitted for brevity.


@login_required
def dashboard(request, template_name='movies/dashboard.html'):
movies = Movie.objects.active().filter(
user=request.user).order_by('-created_at')
# Rest of code omitted for brevity.

我在 Ruby on Rails 方面有很强的背景,我们只需在 Controller 上使用 before_filter :find_user 就可以避免重复。 Django 中处理此类重复的最佳方法是什么?

J

最佳答案

如果可以显示 404 而不是 403,您可以这样做:

movie = get_object_or_404(Movie, slug=slug, user=request.user)

关于django - 干燥 Django View request.user 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com