Ich versuche, CSRF-Validierung für eine Ansicht, die eine REST-API-POST-Anfrage behandelt, aber ich bekomme immer noch eine CSRF verification failed
Fehler.@csrf_exempt funktioniert nicht für den Rest api
Ich habe versucht, die Lösung in this question gegeben und es hat nicht funktioniert.
Mein Code:
sendmoney REST API Ansicht:
@api_view(["POST"])
@authentication_classes([TokenAuthentication,])
@permission_classes([IsAuthenticated, ])
@csrf_exempt
def send_money(request):
if request.method == "POST":
data = JSONParser().parse(request)
success = send_money_api(request, data)
if success["status"]:
return Response(status=status.HTTP_202_ACCEPTED)
else:
return Response({"error": success["errors"]}, status=status.HTTP_400_BAD_REQUEST)
send_money_api Methode:
def send_money_api(request, data):
if data["amount"] and data["to"]:
wallet = Wallet.objects.get(username=request.user.username)
users = User.objects.all()
users_names = []
for user in users:
users_names.append(user)
if int(data["amount"]) > int(wallet.amount):
return {"status": False, "errors": "Withdraw amount greater than balance"}
elif data["to"] == "ravinkohli" and data["to"] == request.user.username and data["to"] not in users_names:
return {"status": False, "errors": "Invalid recipient"}
else:
wallet.subtract_money(data["amount"])
wallet.save()
transaction = Transaction(from_name=request.user.username, wallet_id=wallet, date=datetime.datetime.now(),
to=data['to'], amount=data["amount"])
transaction.save()
return {"status": True}
else:
return {"status": False, "errors": "Missing content"}
Fehler
Forbidden (403)
CSRF verification failed. Request aborted.
You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.
If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for 'same-origin' requests.
Warum nicht '@ csrf_exempt' auf' send_money_api' auch? – Jedi
Ich dachte, weil es keine Ansicht war, aber danke, es funktionierte –
Anführen der Dokumente: * Eine Ansichtsfunktion, oder Ansicht für kurze, ist einfach eine Python-Funktion, die eine Webanforderung annimmt und eine Antwort zurückgibt. * – Jedi