Ist es möglich, eine Methode in meiner APIView-Klasse, die das gleiche Stück Code unabhängig von der Methode, das heißt GET/POST/PUT führt.Django Rest Framework APIView gleichen Code für alle Methoden
Antwort
Vielleicht könnten Sie django Middleware verwenden, um diese Anforderung zu erfüllen.
class CommonResponseMiddleware:
def __init__(self):
pass
def process_request(self, request):
path = request.path_info.lstrip('/')
method = request.method.upper()
if method == "DELETE":
request.META['REQUEST_METHOD'] = 'DELETE'
request.DELETE = QueryDict(request.body)
if method == "PUT":
request.META['REQUEST_METHOD'] = 'PUT'
request.PUT = QueryDict(request.body)
params = {}
if method == "GET":
params = request.GET.items()
# do what ever you want for GET method
if method == "POST":
params = request.POST.items()
# do what ever you want for POST method
if method == "PUT":
params = request.PUT.items()
# do what ever you want for PUT method
if method == "DELETE":
params = request.DELETE.items()
# do what ever you want for DELETE method
dann diese Middleware in settings.py gelten.
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', # <--here
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.gzip.GZipMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'authentication.auth.middleware.LoginRequiredMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'core.middleware.CommonResponseMiddleware',
]
Sie könnten mehr über Middleware finden, hoffe, es könnte Ihnen helfen.
Danke für diese Lösung, aber ich möchte keine Middleware verwenden. Ich wollte nur wissen, ob dafür eine einfache und direkte Lösung existiert. –
Die Verwendung einer Middleware würde Ihre Website für diese Art der Nutzung lahmlegen. es würde für jede Anfrage ausgeführt werden - unabhängig von diesem einfachen Anwendungsfall – Sayse
Verstanden ... Middleware ist meines Erachtens flexibel genug, Sie könnten alle API oder nur eine API an diesem Ort behandeln. Viel Glück, um die Methode zu finden, die Sie wollen:) – zhaorong
Wie bei django arbeitet die APIView
die gleiche Art und Weise, indem man zuerst durch den Versandweg gehen, bevor die Anforderungsmethode entscheiden, so zu verwenden, dass in Ihrer eigenen Ansicht außer Kraft setzen könnte
def dispatch(self, request):
return super().dispatch(request)
Siehe dispatch methods für weitere Informationen.
- 1. Django Rest Framework - APIView Seitennummerierung
- 2. Django Rest Framework APIView Register Route
- 3. Django REST Framework - Separate Berechtigungen pro Methoden
- 4. Django Rest Framework Datei hochladen
- 5. Django Rest Framework für mehrere Bildupload
- 6. Anzeige Bild django Rest Framework
- 7. Wie füge ich Django Rest Framework-Berechtigungen nur für bestimmte Methoden hinzu?
- 8. Welcher "Format" -Parameter wird für Django REST Framework-Ansichten verwendet?
- 9. Django Erholung queryset innen APIview
- 10. Django Rest Framework-Objekt ist nicht iterierbar?
- 11. django Rest Framework RetrieveUpdateAPIView
- 12. Wie macht Django rest_framework Session-Authentifizierung case insensitive? Django Rest Framework Standardauthentifizierung mit dem folgenden Code
- 13. Ermitteln Erstbenutzer authentifiziert mit Django Rest Framework
- 14. Django REST Framework - CurrentUserDefault Verwendung
- 15. Django Rest Framework Benutzerregistrierung?
- 16. Django Rest Framework. Individuelle Erlaubnis mit JSONWebTokenAuthentication
- 17. Verwenden von benutzerdefinierten Methoden im Filter mit Django-Rest-Framework
- 18. Anzeigeoptionen für FK select - Django Rest Framework
- 19. Django REST-Framework ohne Modell
- 20. django Rest Framework attributerror
- 21. Django Rest Framework Versionierung
- 22. 405 Fehler, wenn speziell definierte PATCH Methode für Django REST APIView
- 23. Django Rest Framework - Filterung für Serializer Feld
- 24. Django Rest-Framework pro Aktion Erlaubnis
- 25. Django/Django Rest Framework - CSRF deaktivieren
- 26. ManyToMany mit Django Rest Framework
- 27. Mehrere Modelle in Django Rest Framework?
- 28. Django Rest Framework - Zeitzone für Datetime-Feld
- 29. django Rest Framework https für absolute URLs?
- 30. Auswahlmöglichkeiten für Fremdschlüssel im Django-Rest-Framework
Möchten Sie für jede API für die Methode GET/POST/PUT denselben Code ausführen? oder nur die GET/POST/PUT-Methode einer API? – zhaorong
gleich für Get und Post .. anders für Put. Eine Lösung für alle Methoden wäre ebenfalls wünschenswert. –