【问题标题】:Understanding View to add user to Django Group了解视图以将用户添加到 Django 组
【发布时间】:2020-09-19 00:38:00
【问题描述】:

我正试图围绕视图/视图集 atm,特别是将用户添加到 DRF 组。

到目前为止,我了解可以任意命名视图,并且可以将其放入 views.py 文件中-有时如果它们相关,则在 ViewSet 中。我的主要问题是他们会被自动调用吗?我来自 JS 背景,所以我习惯了一个方法被定义然后被显式调用。

这是我的 ViewSet 代码,其中包含用于添加用户的通用代码:

class ActorViewSet(viewsets.ModelViewSet):
    model = Actors
    queryset = Actors.objects.all()
    serializer_class = ActorSerializer
    filter_backends = [DjangoFilterBackend]
    filter_fields = ['firstname','ethnicity','user','id']

    def add_to_group(self):
        desired_group_name = request.GET.get("group_name")
        my_group = Group.objects.get(name=desired_group_name)
        my_group.user_set.add(your_user)

如果代码指定了有关发布请求的内容,是否会在创建新 Actor 时调用 add_to_group?

感谢您解决问题! :)

【问题讨论】:

  • 据我所知,你必须在类中实现一个方法post。 post 方法将在 Django 收到此视图的请求 POST 时自行定位和执行。你必须把它链接到urls.py

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


【解决方案1】:

刚决定写代码。

class ActorViewSet(viewsets.ModelViewSet):
    model = Actors
    queryset = Actors.objects.all()
    serializer_class = ActorSerializer
    filter_backends = [DjangoFilterBackend]
    filter_fields = ['firstname','ethnicity','user','id']

    def post(self, request):  # it was named "add_to_group"
        desired_group_name = request.GET.get("group_name")
        my_group = Group.objects.get(name=desired_group_name)
        my_group.user_set.add(your_user)
        
        return HttpResponse()  # Note, it must return something for browser

这里有一些有用的文档 - https://docs.djangoproject.com/en/3.1/topics/class-based-views/mixins/#using-singleobjectmixin-with-view

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2021-06-24
    • 1970-01-01
    • 2011-09-11
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多