如何在Django视图中正确获取上下文?
我有一些小组。用户可以成为这些小组的成员。当用户查看小组的资料时,如果他是这个小组的成员,他应该能看到关于自己的信息。这个功能是这样实现的:
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 的情况下获取这个上下文?
1 个回答
0
get()
方法如果找不到符合条件的对象,就会抛出一个DoesNotExist
的异常。这种异常也是模型类的一个属性。
为了防止这个错误导致你的代码停止运行,你可以把它放在一个try/except块里:
try:
context['member'] = Member.objects.get(user=self.request.user, uni=self.object)
except Member.DoesNotExist:
context['member'] = None