如何使用经过身份验证的用户作为上下文对象实现通用视图?

时间:2017-09-21 20:02:27

标签: django django-class-based-views

假设我有一个没有网址参数的自定义路由/some-route,因此它不会有/some-route/<user-id>

我想创建一个通用视图,它将使用经过身份验证的用户作为上下文对象。我就是这样做的,但我认为可能有更好的方法。

UserDetail(DetailView):

    def get_object(self, queryset=None):
        return self.request.user

我能想到的最大的问题是它期待一个pk kwarg从路线上过去。我不想指定任何路由args。有任何想法吗? TY。

1 个答案:

答案 0 :(得分:0)

您建议的课程可以正常使用。

class UserDetail(DetailView):

    def get_object(self, queryset=None):
        return self.request.user

它是详细视图get_object方法,它们希望主键成为url模式中的命名参数。这不是问题,因为你已经覆盖了它。

另一个建议是使用LoginRequiredMixin,以便用户只能在登录时访问该视图。