【问题标题】:Getting 403 (Forbidden) React + Django获取 403(禁止)React + Django
【发布时间】:2021-07-11 16:16:06
【问题描述】:

当我尝试删除或编辑任务(待办事项)时,我收到DELETE http://127.0.0.1:8000/api/tasks/4/ 403 (Forbidden)。但是,当我只想完成任务时,一切正常。也许是CORS中的问题。我在 INSTALLED_APPS 中有“corsheaders”,在 MIDDLEWARE 中有“corsheaders.middleware.CorsMiddleware”

序列化器.py

class TaskSerializer(serializers.ModelSerializer):
    class Meta:
        model = Task
        fields = ('pk', 'title', 'created_at', 'is_done')

settings.py

CORS_ALLOW_METHODS = [
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
]

CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:8000",
]

App.js

function removeTodo(id){
        axios.delete(`http://127.0.0.1:8000/api/tasks/${id}`)
    }

【问题讨论】:

    标签: reactjs django http-status-code-403 django-cors-headers


    【解决方案1】:

    在views.py 中我没有创建@api_view(['DELETE']) 等。并将其添加到urls.py 视图.py

    @api_view(['GET'])
    def taskList(request):
        tasks = Task.objects.all().order_by('-id')
        serializer = TaskSerializer(tasks, many=True)
        return Response(serializer.data)
    
    @api_view(['POST'])
    def taskCreate(request):
        serializer = TaskSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
    
        return Response(serializer.data)
    
    @api_view(['DELETE'])
    def taskDelete(request, pk):
        task = Task.objects.get(id=pk)
        task.delete()
    
        return Response('Item successfully delete!')
    

    【讨论】:

      【解决方案2】:

      在你的 settings.py 中添加:

      REST_FRAMEWORK = {
          'DEFAULT_AUTHENTICATION_CLASSES': (
              'rest_framework.authentication.TokenAuthentication',
              
          )
      }
      

      这是可行的,因为通过这些设置,我们可以使用 Django 的标准 django.contrib.auth 权限或允许未经身份验证的用户进行只读访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        • 2021-05-07
        • 2016-04-24
        相关资源
        最近更新 更多