【问题标题】:How to properly get the context in Django view?如何在 Django 视图中正确获取上下文?
【发布时间】:2014-06-30 13:39:43
【问题描述】:

我有一些小组。用户可以是该组的成员。当用户在查看群组资料时,如果他是成员,他应该看到有关自己的信息。这就是它的工作原理:

    class UniverseDetailView(LoggedInMixin, DetailView):
        model = Universe
        template_name = 'multiuniverse/universe_detail.html'
    
        def get_context_data(self, **kwargs):
            context = super(UniverseDetailView, self).get_context_data(**kwargs)
            member = Member.objects.get(user=self.request.user, uni=self.object)
            context['member'] = member
            return context

但是,如果他不是这个组的成员,它必须抛出这个错误:

    Exception Type: DoesNotExist
    Exception Value: Member matching query does not exist.

是否可以不使用 get_or_create 获取此上下文?

【问题讨论】:

    标签: python django


    【解决方案1】:

    来自Django docs on get()

    如果给定参数没有找到对象,get() 会引发 DoesNotExist 异常。这个异常也是模型类的一个属性

    为了防止错误停止你的代码执行,你可以将它包装在一个 try/except 中:

    try:
        context['member'] = Member.objects.get(user=self.request.user, uni=self.object)
    except Member.DoesNotExist:
        context['member'] = None
    

    另见:Get an object from the DB, or None if nothing matches

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2021-06-08
      • 1970-01-01
      • 2012-10-18
      • 2016-02-09
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多