GOOGLE ADS

Dienstag, 3. Mai 2022

Django Rest Framework Daten ohne Serializer zur Ansicht senden

Ich habe ein MagicModell in meiner Anwendung. Ich möchte, dass der Benutzer, der mit diesem Modell verbunden ist, zu seiner E-Mail-Adresse geht, um etwas zu überprüfen, bevor er auf die Informationen zugreifen kann. Dies sollte über eine RESTful API geschehen. Das Problem ist, dass der Benutzer nicht unbedingt angemeldet sein sollte, um auf diese Funktion zuzugreifen (für Designentscheidungen, über die ich keine Kontrolle hatte).

Ich habe die Logik zum Generieren der erforderlichen Informationen und zum Senden der E-Mail (nur wenn eine solche E-Mail registriert ist), zur Authentifizierung nach dem Zugriff auf die per E-Mail gesendeten Informationen usw. implementiert.

Meine Frage: Wie implementiere ich eine Ansicht, die eine Benutzer-E-Mail im Textkörper (oder der URL) aufnimmt?

Ansatz 1: Erstellen Sie eine URL /magic_api/v1/tdbverification/(?P<email>[\w.@]+)/, extrahieren Sie die E-Mail-Adresse und senden Sie die E-Mail.

Problem mit 1: Ich kann die E-Mail anscheinend nicht extrahieren und muss ein JSON-Objekt zurückgeben, ohne einen Serializer zu haben

Ansatz 2: Erstellen Sie eine Ansicht, die den Text übernimmt:{"email": "<email@here.com>"}

Problem mit 2: Dies erfordert einen Serializer ohne Modell (da diese Ansicht nur zum Senden der E-Mail dient, ändert sie keine Modellobjekte). Ich habe versucht, mit einer serializers.SerializerKlasse zu arbeiten, konnte aber nicht herausfinden, wie ich die E-Mail-Sendelogik integrieren sollte.

Jede Hilfe dabei wird sehr geschätzt.


Lösung des Problems

Warum Sie immer einen Serializer brauchen! Sie können eine Ansicht schreiben, ohne einen Serializer zu verwenden. Beispiel

from rest_framework.views import APIView
from rest_framework.response import Response
class Test(APIView):
def post(self, request):
email = request.data['email']
... your logic...
return Response(...)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...