diff --git a/posts/serializers.py b/posts/serializers.py new file mode 100644 index 0000000..0ff2be4 --- /dev/null +++ b/posts/serializers.py @@ -0,0 +1,7 @@ +from rest_framework import serializers +from .models import Notice + +class NoticeSerializer(serializers.ModelSerializer): + class Meta: + model = Notice + fields = ('id', 'notice_title', 'notice_text', 'pub_start', 'pub_end') \ No newline at end of file diff --git a/posts/urls.py b/posts/urls.py index c5e11a0..9b34281 100644 --- a/posts/urls.py +++ b/posts/urls.py @@ -4,5 +4,8 @@ from . import views urlpatterns = [ path('edit', views.new, name='new'), path('', views.index, name = 'index'), - path('delete//', views.delete, name ='delete') + path('delete//', views.delete, name ='delete'), + + path('notices/', views.notice_list), + path('notices//', views.notice_detail), ] \ No newline at end of file diff --git a/posts/views.py b/posts/views.py index 26a9a87..939703b 100644 --- a/posts/views.py +++ b/posts/views.py @@ -1,10 +1,14 @@ +from django.http import JsonResponse from django.shortcuts import render, redirect, HttpResponse from django.utils import timezone from django.contrib.auth.decorators import login_required from django.contrib.admin.views.decorators import staff_member_required +from rest_framework.parsers import JSONParser +from django.views.decorators.csrf import csrf_exempt from .forms import NoticeForm from .models import Notice +from .serializers import NoticeSerializer def index(request): @@ -34,4 +38,42 @@ def delete(request, deleteId=None): delNotice = Notice.objects.get(id=deleteId) if delNotice != None: delNotice.delete(()) - return redirect('index') \ No newline at end of file + return redirect('index') + +@csrf_exempt +def notice_list(request): + if request.method == 'GET': + notices = Notice.objects.all() + serializer = NoticeSerializer(notices, many=True) + return JsonResponse(serializer.data, safe=False) + + elif request.method == 'POST': + data = JSONParser().parse(request) + serializer = NoticeSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return JsonResponse(serializer.data, status=201) + return JsonResponse(serializer.errors, status=400) + +@csrf_exempt +def notice_detail(request, id): + try: + notice = Notice.objects.get(id=id) + except Notice.DoesNotExist: + return HttpResponse(status=404) + + if request.method == 'GET': + serializer = NoticeSerializer(notice) + return JsonResponse(serializer.data) + + elif request.method == 'POST': + data = JSONParser().parse(request) + serializer = NoticeSerializer(notice, data=data) + if serializer.is_valid(): + serializer.save() + return JsonResponse(serializer.data) + return JsonResponse(serializer.errors, status=400) + + elif request.method == 'DELETE': + notice.delete() + return HttpResponse(status=204) diff --git a/webengdjango/settings.py b/webengdjango/settings.py index 31f5a3f..041520c 100644 --- a/webengdjango/settings.py +++ b/webengdjango/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'rest_framework', ] MIDDLEWARE = [