diff --git a/.idea/misc.xml b/.idea/misc.xml old mode 100644 new mode 100755 diff --git a/.idea/modules.xml b/.idea/modules.xml old mode 100644 new mode 100755 diff --git a/.idea/news.iml b/.idea/news.iml old mode 100644 new mode 100755 diff --git a/.idea/vcs.xml b/.idea/vcs.xml old mode 100644 new mode 100755 diff --git a/news/settings.py b/news/settings.py index afa4e56..ad5128f 100755 --- a/news/settings.py +++ b/news/settings.py @@ -38,6 +38,8 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'posts.apps.PostsConfig', + 'rest_framework', + ] MIDDLEWARE = [ diff --git a/posts/serializers.py b/posts/serializers.py new file mode 100644 index 0000000..bde19ce --- /dev/null +++ b/posts/serializers.py @@ -0,0 +1,9 @@ +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') + + diff --git a/posts/urls.py b/posts/urls.py index ffc2ada..fa90991 100755 --- a/posts/urls.py +++ b/posts/urls.py @@ -5,4 +5,6 @@ urlpatterns = [ path('', views.index, name='index'), path('new', views.new, name='new'), 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 36f14c7..7e7b143 100755 --- a/posts/views.py +++ b/posts/views.py @@ -1,7 +1,18 @@ from django.shortcuts import render, redirect -from .models import Notice + from django.utils import timezone from .forms import NoticeForm +from django.http import JsonResponse, HttpResponse +from .models import Notice +from .serializers import NoticeSerializer +from rest_framework.parsers import JSONParser +from django.views.decorators.csrf import csrf_exempt + + + + + + def new(request): @@ -32,3 +43,40 @@ def delete(request, deleteId=None): delNotice.delete() 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 == 'PUT': + 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) \ No newline at end of file