6 Commits

Author SHA1 Message Date
Derinhelm
cc90f23cd8 FEAT: API 2021-04-17 13:46:28 +03:00
Aleksey Lobanov
920c7f52bd Merge pull request #18 from AlekseyLobanov/feat_6
Feat 6
2021-04-14 13:37:40 +03:00
Derinhelm
88e19efc0b feat: Зафиксирована версия drf-yasg 2021-04-14 13:27:05 +03:00
Derinhelm
df54d92ecc feat: В Swagger UI добавлена JWT-авторизация 2021-04-14 13:13:06 +03:00
Derinhelm
8bf990b5f6 feat: Добавлен Swagger UI
http://0.0.0.0:8000/swagger/
2021-04-14 00:13:00 +03:00
4e61029ce6 Merge pull request #12 from AlekseyLobanov/feat_base_empty_version
Первый PR, решает #2 #3 #5 #7 #8
2021-04-09 22:54:22 +03:00
4 changed files with 63 additions and 3 deletions

View File

@@ -1,5 +1,7 @@
from rest_framework import viewsets, serializers, permissions
from rest_framework import routers
from rest_framework.response import Response
from rest_framework import status
from .models import ToDoList
@@ -9,12 +11,43 @@ class ToDoListSerializer(serializers.HyperlinkedModelSerializer):
model = ToDoList
fields = ["title", "created_at"]
class WriteToDoListSerializer(serializers.Serializer):
class Meta:
model = ToDoList
fields = ["title", "created_at", "user"]
def create(self, validated_data):
return ToDoList.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.title = validated_data.get('title', instance.title)
instance.user = validated_data.get('user', instance.user)
instance.save()
return instance
class ToDoListViewSet(viewsets.ModelViewSet):
queryset = ToDoList.objects.all()
serializer_class = ToDoListSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
queryset = ToDoList.objects.all()
print(type(queryset), queryset.__dict__)
user = self.request.user
print(type(user), user.__dict__)
return queryset.filter(user=user)
def create(self, request):
data = {
'user': request.user,
'title': request.data['title'],
}
serializer = WriteToDoListSerializer(data=data)
print(serializer.__dict__)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
router = routers.DefaultRouter()
router.register(r"lists", ToDoListViewSet)
router.register(r"lists", ToDoListViewSet, basename="ToDoList")

View File

@@ -27,7 +27,8 @@ SECRET_KEY = "django-insecure-toz+*lt(ejm!l*)92w2ciqoh^1kz#a(abbpcn54-dbw(nxoy&7
DEBUG = True
ALLOWED_HOSTS = []
if DEBUG:
ALLOWED_HOSTS = ["0.0.0.0"]
# Application definition
@@ -40,8 +41,19 @@ INSTALLED_APPS = [
"django.contrib.messages",
"django.contrib.staticfiles",
"rest_framework",
"drf_yasg",
]
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'Bearer': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
}
}
}
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",

View File

@@ -6,8 +6,21 @@ from rest_framework_simplejwt.views import (
TokenRefreshView,
)
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from .api import router
schema_view = get_schema_view(
openapi.Info(
title="ToDo List",
default_version='v1',
description="Swagger Interface for ToDo List",
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
path("admin/", admin.site.urls),
@@ -15,4 +28,5 @@ urlpatterns = [
path("api/token/refresh/", TokenRefreshView.as_view(), name="token_refresh"),
path("api/", include(router.urls)),
path("api-auth/", include("rest_framework.urls", namespace="rest_framework")),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]

View File

@@ -21,3 +21,4 @@ toml==0.10.2
urllib3==1.26.4
djangorestframework-simplejwt==4.6.0
psycopg2-binary>=2.8
drf-yasg==1.20.0