From 8a364f60e55c0aec31e9ad0feeb67639b78d1e79 Mon Sep 17 00:00:00 2001 From: khaloufam70043 Date: Tue, 3 Dec 2019 15:20:47 +0100 Subject: [PATCH] p8 --- db.sqlite3 | Bin 135168 -> 135168 bytes news/settings.py | 1 + posts/models.py | 1 + posts/serializers.py | 7 ++++++ posts/urls.py | 2 ++ posts/views.py | 46 ++++++++++++++++++++++++++++++++++++++-- venv/pip-selfcheck.json | 2 +- 7 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 posts/serializers.py diff --git a/db.sqlite3 b/db.sqlite3 index a2715f349b678032ad34e2ee318b5614f4ad727f..6aaf11ba48b610dde15f2d5ac46fb838bb7ee697 100755 GIT binary patch delta 88 zcmV-e0H^?_5WMOn=Zen3>Yh`Yi%nt%Im*)-w)C2$k07aL-4+24_u^PVs delta 58 zcmV-A0LA}+pa_7V2#^~AA(0$I0U?24wO|3E{|^8F00a)_01vwlZ4Vm`=d&Ro*AAEG Q4g%B!LjeW=m%k4JK@NZsWdHyG diff --git a/news/settings.py b/news/settings.py index 23ce0b5d..4a6cf1ac 100755 --- a/news/settings.py +++ b/news/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'posts.apps.PostsConfig', + 'rest_framework', ] MIDDLEWARE = [ diff --git a/posts/models.py b/posts/models.py index 50584628..afd8a3d1 100755 --- a/posts/models.py +++ b/posts/models.py @@ -1,5 +1,6 @@ from django.db import models + # Create your models here. class Notice(models.Model): notice_title = models.CharField(max_length=80) diff --git a/posts/serializers.py b/posts/serializers.py new file mode 100644 index 00000000..3e94afe7 --- /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 ffc2ada7..34100e5d 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 b7dbc5ea..13e8f9d2 100755 --- a/posts/views.py +++ b/posts/views.py @@ -1,7 +1,12 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect from .models import Notice from django.utils import timezone from .forms import NoticeForm +from .serializers import NoticeSerializer +from django.http import JsonResponse, HttpResponse +from rest_framework.parsers import JSONParser +from django.views.decorators.csrf import csrf_exempt + def index(request): notices = Notice.objects.all() @@ -29,4 +34,41 @@ 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 == '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 diff --git a/venv/pip-selfcheck.json b/venv/pip-selfcheck.json index 80cff514..f047306e 100755 --- a/venv/pip-selfcheck.json +++ b/venv/pip-selfcheck.json @@ -1 +1 @@ -{"last_check":"2019-11-19T13:10:17Z","pypi_version":"19.3.1"} \ No newline at end of file +{"last_check":"2019-12-03T13:13:19Z","pypi_version":"19.3.1"} \ No newline at end of file