首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django/Python -帮助移动is_authenticated和用户== model.user查看

Django/Python -帮助移动is_authenticated和用户== model.user查看
EN

Stack Overflow用户
提问于 2018-08-03 04:25:16
回答 1查看 75关注 0票数 0

首先,很抱歉,如果我不清楚我要做什么,或者我没有提供足够的信息,我仍然是Django/Python的新手。

我目前有一个视图,可以呈现类似于博客文章的内容:

class SingleCharacter(LoginRequiredMixin,generic.DetailView):
    model = models.Character

    def get_context_data(self, **kwargs):
        context = super(SingleCharacter, self).get_context_data(**kwargs)
        return context

并且,在此视图的模板中,我有一个模板标记,用于检查用户是否已通过身份验证以及帖子的所有者:

 {% if user.is_authenticated and user == character.user %}

然而,我目前正在将xhtml2pdf整合到我的项目中,这种只将帖子提供给创建它的用户的方法导致了一些问题。

我想知道是否可以将user.is_authenticated和user == character.user移到视图中而不是模板标记中,如果可以,我可以使用一个简单的if语句来实现,就像这样?

class SingleCharacter(LoginRequiredMixin,generic.DetailView):
    model = models.Character
    if user.is_authenticated and user == character.user:
      def get_context_data(self, **kwargs):
          context = super(SingleCharacter, self).get_context_data(**kwargs)
          return context
    else:
      <I'll include some redirect to a 404 page>

我正在试着看看是否有其他的方法,但我想我应该在这里把它抛给更有经验的人,希望能弄清楚。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 04:42:42

您可以覆盖DetailView的get方法并处理那里的逻辑:

class SingleCharacter(LoginRequiredMixin,generic.DetailView):
    model = models.Character

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        if self.request.user.is_authenticated and self.request.user == self.object.user:
            context = self.get_context_data(object=self.object)
            return self.render_to_response(context)
        else:
            # redirect
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51661642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档