Aufgabe8(REST)

This commit is contained in:
Carelle Vanessa Mekougoum Fotsing 2019-12-04 08:24:13 +01:00
parent a17626b3db
commit fc52773a20
6 changed files with 50 additions and 2 deletions

Binary file not shown.

View File

@ -38,6 +38,7 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'posts.apps.PostsConfig', 'posts.apps.PostsConfig',
'rest_framework',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@ -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')

View File

@ -5,4 +5,7 @@ urlpatterns = [
path('', views.index, name='index'), path('', views.index, name='index'),
path('new', views.new, name='new'), path('new', views.new, name='new'),
path('delete/<int:deleteId>', views.delete, name='delete'), path('delete/<int:deleteId>', views.delete, name='delete'),
path('notices/',views.notice_list),
path('notices/<int:id>/', views.notice_detail),
] ]

View File

@ -1,9 +1,13 @@
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from posts.forms import NoticeForm from posts.forms import NoticeForm
from posts.serializers import NoticeSerializer
from .models import Notice from .models import Notice
from django.utils import timezone from django.utils import timezone
from django.http import HttpResponse from django.http import HttpResponse, JsonResponse
def index(request): def index(request):
notices = Notice.objects.all() notices = Notice.objects.all()
@ -31,4 +35,37 @@ def delete(request, deleteId=None):
delNotice = Notice.objects.get(id=deleteId) delNotice = Notice.objects.get(id=deleteId)
if delNotice != None: if delNotice != None:
delNotice.delete() delNotice.delete()
return redirect('index') 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)