diff --git a/src/api/demo/settings.py b/src/api/demo/settings.py index 9dfbbc7..0cd341b 100644 --- a/src/api/demo/settings.py +++ b/src/api/demo/settings.py @@ -124,11 +124,3 @@ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') - -REST_FRAMEWORK = { - # Use Django's standard `django.contrib.auth` permissions, - # or allow read-only access for unauthenticated users. - 'DEFAULT_PERMISSION_CLASSES': [ - 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' - ] -} diff --git a/src/api/demo/urls.py b/src/api/demo/urls.py index aa86255..831c871 100644 --- a/src/api/demo/urls.py +++ b/src/api/demo/urls.py @@ -22,14 +22,16 @@ path, re_path, ) +from user import views as user_view # basic urls urlpatterns = [ path('admin/', admin.site.urls), - path('api/', include([ - path('users/', include('user.urls')), - ])) + path('users/', user_view.UsersView.as_view()), + #path('api/', include([ + # path('users/', include('user.urls')), + #])) ] diff --git a/src/api/user/migrations/0001_initial.py b/src/api/user/migrations/0001_initial.py new file mode 100644 index 0000000..4e7dc60 --- /dev/null +++ b/src/api/user/migrations/0001_initial.py @@ -0,0 +1,22 @@ +# Generated by Django 3.0.6 on 2020-05-09 14:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('email', models.EmailField(max_length=254, unique=True)), + ('name', models.CharField(max_length=100)), + ], + ), + ] diff --git a/src/api/user/models.py b/src/api/user/models.py index 71a8362..ec9e528 100644 --- a/src/api/user/models.py +++ b/src/api/user/models.py @@ -1,3 +1,7 @@ from django.db import models -# Create your models here. + +class User(models.Model): + id = models.AutoField(auto_created=True, primary_key=True) + email = models.EmailField(unique=True) + name = models.CharField(max_length=100) diff --git a/src/api/user/serializers.py b/src/api/user/serializers.py index 03dfbe1..f284eff 100644 --- a/src/api/user/serializers.py +++ b/src/api/user/serializers.py @@ -1,8 +1,8 @@ -from django.contrib.auth.models import User +from user.models import User from rest_framework import serializers -class UserSerializer(serializers.HyperlinkedModelSerializer): +class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__' diff --git a/src/api/user/views.py b/src/api/user/views.py index 46dd18b..722e5b2 100644 --- a/src/api/user/views.py +++ b/src/api/user/views.py @@ -1,23 +1,63 @@ -from django.shortcuts import render from django.http import JsonResponse from django.db import transaction from rest_framework.generics import GenericAPIView - -from user.serializers import UserSerializer -from django.contrib.auth.models import User +from rest_framework.parsers import ( + FormParser, + MultiPartParser +) +from drf_yasg.utils import swagger_auto_schema +from drf_yasg import openapi +from user.serializers import UserSerializer +from user.models import User class UsersView(GenericAPIView): queryset = User.objects.all() serializer_class = UserSerializer + parser_classes = (FormParser, MultiPartParser) + + @swagger_auto_schema( + operation_summary='我是 GET 的摘要', + operation_description='我是 GET 的說明', + manual_parameters=[ + openapi.Parameter( + name='email', + in_=openapi.IN_PATH, + description='Email', + type=openapi.TYPE_STRING + ), + ] + ) def get(self, request, *args, **krgs): users = self.get_queryset() serializer = self.serializer_class(users, many=True) data = serializer.data return JsonResponse(data, safe=False) + @swagger_auto_schema( + operation_summary='我是 POST 的摘要', + operation_description='我是 POST 的說明', + # request_body=openapi.Schema( + # type=openapi.TYPE_OBJECT, + # properties={ + # 'name': openapi.Schema( + # type=openapi.TYPE_STRING, + # description='User Name' + # ) + # } + # ) + manual_parameters=[ + openapi.Parameter( + name='image', + in_=openapi.IN_FORM, + description='Image', + type=openapi.TYPE_FILE + ), + ], + deprecated=True + ) def post(self, request, *args, **krgs): data = request.data try: @@ -28,4 +68,4 @@ def post(self, request, *args, **krgs): data = serializer.data except Exception as e: data = {'error': str(e)} - return JsonResponse(data, safe=False) + return JsonResponse(data)