簡體   English   中英

獲取 403(禁止)反應 + Django

[英]Getting 403 (Forbidden) React + Django

當我嘗試刪除或編輯任務(待辦事項)時,我得到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')

設置.py

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

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

應用程序.js

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

在views.py中,我沒有創建@api_view(['DELETE']) 等。並將其添加到urls.py views.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!')

在您的 settings.py 中添加:

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

這是有效的,因為通過這些設置,我們可以使用 Django 的標准django.contrib.auth權限或允許未經身份驗證的用戶進行只讀訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM