【问题标题】:Show profile to the owner only and not to other users in view仅向所有者显示个人资料,而不向其他可见的用户显示
【发布时间】:2021-06-26 08:55:15
【问题描述】:

我想将此视图显示给对象的所有者,而不是其他登录用户。 UserPasseTestMixin i 类视图可以做到这一点吗?我应该这样做吗?

这与登录无关,所以请不要写有关登录的信息thx

谢谢

class UserDetailView(LoginRequiredMixin, UserPassesTestMixin, DetailView):
    model = User
    slug_field = "pk"
    slug_url_kwarg = "pk"
   
   
    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        context = self.get_context_data(object=self.object)
        return self.render_to_response(context)```

【问题讨论】:

    标签: django django-models django-rest-framework django-views django-forms


    【解决方案1】:

    如果您只想将其显示给所有者,则无需实现 slug_field 或任何其他内容。您可以简单地在get_object中返回登录使用:

    class UserDetailView(LoginRequiredMixin, DetailView):
        model = User
        
        def get_object(self, *args, **kwargs):
            return self.request.user

    因此,url 可能如下所示:

    path('profile/', UserDetailView.as_view(), name='profile')

    没有主键,因为User 对象完全由登录用户确定。

    【讨论】:

    • 为什么要简单?我已经做了好几个小时了,威廉来救场了。你是个天才。谢谢它就像一个魅力
    猜你喜欢
    • 2021-03-09
    • 2019-11-29
    • 2015-12-26
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    相关资源
    最近更新 更多