Heim > Backend-Entwicklung > Python-Tutorial > Django Rest-Framework mit Swagger

Django Rest-Framework mit Swagger

Mary-Kate Olsen
Freigeben: 2024-11-30 05:37:13
Original
901 Leute haben es durchsucht

Was können Sie von diesem Artikel erwarten?

In diesem Artikel geht es um die Implementierung von Swagger in einem Django-Rest-Framework-Projekt; wir werden an unserer Kontenverwaltung arbeiten

Serienbestellung

Schauen Sie sich bei Interesse frühere Artikel an!

  1. KI-Projekt von Grund auf, die Idee, lebendiges Tagebuch
  2. Beweisen Sie, dass es mit Google AI Studio machbar ist
  3. Django API-Projekt-Setup
  4. Django-Kontenverwaltung (1), Registrierung und Aktivierung
  5. Django-Kontenverwaltung (2), anmelden und Passwort ändern
  6. Swagger mit Django Rest Framework (Sie sind hier?)

Installation und Einrichtung

Der beste Swagger-Generator, den ich für das Rest-Framework gefunden habe, ist drf-yasg, aber ich bin offen für Vorschläge, wenn Sie einen besseren kennen!
Beginnen wir mit der Paketinstallation

pip install drf-yasg
Nach dem Login kopieren

Jetzt gehe ich zu unserer Einstellungsdatei

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'drf_yasg', #new
    'corsheaders',
    'rest_framework',
    'django_filters',
    'app_account',
    'app_admin',
    'app_main',
]

SWAGGER_SETTINGS = {
   'LOGIN_URL' : '/api/account/login/',
   'SECURITY_DEFINITIONS': {
      'Bearer': {
            'type': 'apiKey',
            'name': 'Authorization',
            'in': 'header'
      }
   }
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}

Nach dem Login kopieren

alive_diary/settings.py

Wir haben die drf_yasg-App zu den installierten Apps hinzugefügt und die Standardauthentifizierungsmethode auf Bearer-JWT-Token eingestellt.

Jetzt zur URLs-Datei

from django.contrib import admin
from django.urls import path, include


from rest_framework.documentation import include_docs_urls # new
from rest_framework.schemas import get_schema_view # new

from drf_yasg.views import get_schema_view # new
from drf_yasg import openapi # new

schema_view = get_schema_view(
    openapi.Info(
        title="Swagger API",
        default_version='v1',
    ),
    public=True,
)
API_DESCRIPTION = 'A Web API for creating and editing.' # new
API_TITLE = 'API' # new

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/account/', include('app_account.urls')),

    path('docs/', include_docs_urls(title=API_TITLE,description=API_DESCRIPTION)), # new
    path('swagger/', schema_view.with_ui('swagger',cache_timeout=0),name="swagger-schema"), # new
]

Nach dem Login kopieren

das ist es! tolle Arbeit!
Lass es uns versuchen

python manage.py runserver 0.0.0.0:8555 
Nach dem Login kopieren

Das Öffnen von http://localhost:8555/swagger/ sollte so aussehen

Django Rest framework with Swagger

Testen von Swagger mit benutzerdefiniertem ApiView

Beginnen wir mit der Anmeldung über die Login-API-Ansicht in Swagger

Django Rest framework with Swagger

Dann authentifizieren wir uns mithilfe der Schaltfläche „Autorisieren“ oben auf der Swagger-Seite. Stellen Sie sicher, dass Sie das Zugriffstoken verwenden, und vergessen Sie nicht den Bearer davor: „Bearer token...“

Django Rest framework with Swagger

Versuchen wir mal, das Passwort mit Swagger zu ändern

Django Rest framework with Swagger

es ist leer! Swagger konnte das Anforderungsschema nicht erkennen. Der einfachste Weg, es anzupassen, ist die Verwendung des automatischen Swagger-Schemas

from drf_yasg.utils import swagger_auto_schema #new


class AccountChangePasswordView(APIView):
    permission_classes = (IsAuthenticated,)
    renderer_classes = [CustomRenderer, BrowsableAPIRenderer]

    @swagger_auto_schema(request_body=ChangePasswordSerializer) # new
    def post(self, request, *args, **kwargs):
        serializer = ChangePasswordSerializer(data=request.data)

        if not serializer.is_valid():
            raise APIException(serializer.errors)

        user = request.user
        password = serializer.validated_data.get("password")
        new_password = serializer.validated_data.get("new_password")

        if not user.check_password(password):
            raise APIException("invalid_password")

        user.set_password(new_password)
        user.save()

        return Response("success")
Nach dem Login kopieren

Jetzt sieht es gut aus

Django Rest framework with Swagger

Wir können jetzt alle authentifizierten Anfragen mit Swagger testen! Im nächsten Artikel geht es zurück zur Konten-App

Bleiben Sie dran ?

Das obige ist der detaillierte Inhalt vonDjango Rest-Framework mit Swagger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage