Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions src/api/demo/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
]
}
8 changes: 5 additions & 3 deletions src/api/demo/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')),
#]))
]


Expand Down
22 changes: 22 additions & 0 deletions src/api/user/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -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)),
],
),
]
6 changes: 5 additions & 1 deletion src/api/user/models.py
Original file line number Diff line number Diff line change
@@ -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)
4 changes: 2 additions & 2 deletions src/api/user/serializers.py
Original file line number Diff line number Diff line change
@@ -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__'
50 changes: 45 additions & 5 deletions src/api/user/views.py
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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)