小编eks*_*soo的帖子

如何将额外的参数传递给视图集中的 Django Rest 自定义操作?

@action(detail=True, methods=['get'], url_path='password-reset/<uid64>/<token>', url_name='password-reset-confirm')
    def password_reset(self, request, uid64, token):
        pass
Run Code Online (Sandbox Code Playgroud)

这是我试图访问的网址(http://localhost:8000/user/2/password-reset/Mg/az44bk-48c221372ceaca98b4090a421131d5f3),但它一直返回404页面未找到

更新::

网址文件:

from django.urls import path
from django.urls.conf import include
from .views import UserViewset, CompanyViewset, ProfileViewset
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register('user', UserViewset, basename='user')
router.register('company', CompanyViewset, basename='company')
router.register('profile', ProfileViewset, basename='profile')

urlpatterns = [
    path('', include(router.urls)),
    path('<int:id>', include(router.urls)),
]
Run Code Online (Sandbox Code Playgroud)

视图文件:

@action(detail=True, methods=['post'], url_path='request-reset-email', url_name='request-reset-email')
    def request_reset_password_email(self, request, pk):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        email = serializer.data.get('email')
        user = self.get_object()
        if email == user.email:
            token = PasswordResetTokenGenerator().make_token(user)
            current_site = get_current_site(request=request).domain …
Run Code Online (Sandbox Code Playgroud)

django custom-action token django-rest-framework django-rest-viewsets

3
推荐指数
1
解决办法
3611
查看次数

如何访问序列化器查询集中的上下文

我正在寻找一种访问上下文以按当前用户进行过滤的方法

 class RemovePermissionsSerializer(serializers.Serializer):
        user_permissions = serializers.PrimaryKeyRelatedField(
            many=True, queryset=Permission.objects.filter(user = context.get('request').user)
        )
Run Code Online (Sandbox Code Playgroud)

我无法访问上下文,因为它未定义,self.context 也无法访问

django django-rest-framework

0
推荐指数
1
解决办法
548
查看次数