如何在主页上使用Django的DetailView(或一些内置的视图类)?

时间:2017-01-26 21:47:29

标签: python django django-generic-views detailview

我正在Django中构建一个应用程序,我想为经过身份验证的用户设置一个主页。

我认为最好使用de内置generic.DetailView,因为我想在页面中显示的详细信息是已识别用户的详细信息。问题是,这个类需要通过URL作为十进制 pk 参数接收目标实体的id。但是,有关该实体的信息位于request.user,我希望避免重复该信息,以免在网址中显示我的用户ID。

我认为在get_object方法中获取request可以解决问题,但不需要参数。

这可能吗?这是一个好主意吗?有没有我可能遗失的替代方案?

1 个答案:

答案 0 :(得分:3)

DetailView只需要pkslug来获取对象。如果您覆盖get_object,则不需要。在get_object方法中,您可以使用self.request.user访问该用户。

最后,如果您的视图使用登录用户,则可以使用LoginRequiredMixin确保只有登录用户才能访问该视图。

from django.contrib.auth.mixins import LoginRequiredMixin

class MyDetailView(LoginRequiredMixin, DetailView):
    ...
    def get_object(self):
        return self.request.user
相关问题