首页 > 解决方案 > Django:我们可以在 DRF 中强制执行 POST 请求而不需要 csrftoken 吗?

问题描述

我正在post commenting使用 DRF 中实现一种机制ListCreateAPIView。使用 ReactJS,我想允许匿名访问者对帖子发表评论。csrftoken只有在可用时我才能这样做(这意味着用户必须登录csrftoken才能使用)

但我想强制对未经身份验证的用户/匿名网站访问者发表评论。你们知道有什么方法可以做到这一点,也许不需要csrftoken。或者如果确实需要令牌,有没有办法在不依赖 Django 的身份验证过程的情况下生成它?

我知道 Django 我非常需要我正在开发的这个功能的方向。

谢谢一堆!

视图.py

class APIListCreate__PostComment(generics.ListCreateAPIView):
    queryset            = PostComment.objects.all().order_by('-created_at')
    serializer_class    = PostCommentSerializer
    permission_classes  = [permissions.AllowAny]
    pagination_class    = None
    filter_backends     = (DjangoFilterBackend,)
    filterset_class     = APICustomFilter__PostComment

    def get_queryset(self):
        # this code block aims to paginate result
        # when 'pagination=True' query param is detected in the URL
        if self.request.query_params.get('pagination'):
            if self.request.query_params.get('pagination') == 'True':
                self.pagination_class = APIPagination
        return self.queryset

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

DRF 设置

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
        'rest_framework.permissions.IsAuthenticatedOrReadOnly',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ]
}

标签: pythondjangodjango-rest-frameworkdjango-csrf

解决方案


推荐阅读