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

How would you implement a Generic view with the authenticated user as the context object?

假设我有一个自定义路由 /some-route,没有 url 参数,所以它不会有 /some-route/<user-id>

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

UserDetail(DetailView):

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

我能想到的最大问题是它期望 pk kwarg 从路线中过去。我不想指定任何路由参数。有任何想法吗? Ty.

您建议的 class 可以正常工作。

class UserDetail(DetailView):

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

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

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