如何将 Django 的 DetailView(或某些内置视图 class)用于主页?
How to use Django's DetailView (or some built-in view class) for a home page?
我正在用 Django 构建一个应用程序,我想为经过身份验证的用户设置一个主页。
我认为最好为此使用内置 generic.DetailView
,因为我想在页面中显示的详细信息是已识别用户的详细信息。问题是,这个 class 需要通过 URL 接收目标实体的 id 作为十进制 pk 参数。但是,有关实体的信息在 request.user
中,我想避免重复该信息,以免在 url 中显示我的用户 ID。
我想在 get_object
方法中获取 request
就可以解决问题,但它不需要参数。
这可能吗?这是一个好主意吗?有没有我可能遗漏的替代品?
DetailView
只需要pk
或slug
来获取对象。如果您覆盖 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
我正在用 Django 构建一个应用程序,我想为经过身份验证的用户设置一个主页。
我认为最好为此使用内置 generic.DetailView
,因为我想在页面中显示的详细信息是已识别用户的详细信息。问题是,这个 class 需要通过 URL 接收目标实体的 id 作为十进制 pk 参数。但是,有关实体的信息在 request.user
中,我想避免重复该信息,以免在 url 中显示我的用户 ID。
我想在 get_object
方法中获取 request
就可以解决问题,但它不需要参数。
这可能吗?这是一个好主意吗?有没有我可能遗漏的替代品?
DetailView
只需要pk
或slug
来获取对象。如果您覆盖 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