【问题标题】:Djoser- override perform_create method of class UserViewSetDjoser- 覆盖 UserViewSet 类的 perform_create 方法
【发布时间】:2023-01-09 01:21:12
【问题描述】:

需要重写Djoser类UserViewSet的方法perform_create。我不知道该怎么做,任何人都可以帮助我。来自 UserViewSet 的方法

def perform_update(self, serializer):
    super().perform_update(serializer)
    user = serializer.instance
    signals.user_updated.send(
        sender=self.__class__, user=user, request=self.request
    )

    # should we send activation email after update?
    if settings.SEND_ACTIVATION_EMAIL and not user.is_active:
        context = {"user": user}
        to = [get_user_email(user)]
        settings.EMAIL.activation(self.request, context).send(to)

我的网址模式

from django.urls import URLPattern, path, re_path, include
from . import views
from .views import MyTokenObtainPairView, GetUser, ReviewsView, GetReviewsByUser
from rest_framework_simplejwt.views import (
TokenRefreshView,
)


urlpatterns = [
path('', views.getRoutes),
path('api/token/', MyTokenObtainPairView.as_view(),
     name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('api/auth/', include('djoser.urls')),
path('api/user/', GetUser),
path('api/user/<int:pk>/', GetReviewsByUser),
path('api/reviews/', ReviewsView),

]

【问题讨论】:

    标签: django django-rest-framework djoser


    【解决方案1】:

    您可能已经找到了解决方案,但其他人可能会觉得这很有用。

    为了覆盖 perform_create 方法,您必须首先子类化 UserViewSet 类,然后覆盖 perform_create 方法。这是一个例子

    视图.py

    from djoser.views import UserViewSet
    
    class CustomSignupView(UserViewSet):
        def perform_create(self, serializer):
        #you can have your custom implemtation here
    

    网址.py

    urlpatterns = [
        path('signup/', views.CustomSignupView.as_view({'post': 'create'})),
    ]
    

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 2021-05-08
      • 2011-04-17
      • 2012-05-13
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多