123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- from posts.models import Notice
- from django.utils import timezone
- from django.shortcuts import render
-
- from django.http import HttpResponse
-
- def index(request):
- #return render(request, 'posts/index.html')
-
- #-------------------- eigener Versuch ---------------------
-
- # relevant_notices = Notice.objects.filter(pub_start__lt = timezone.datetime.now())
- # relevant_notices = Notice.objects.filter(pub_end__gt = timezone.datetime.now())
-
- # for curr_msg in relevant_notices:
- # context['now'] += "TITEL DER NACHRICHT: " + curr_msg.notice_title + "TEXT DER NACHRICHT: " + curr_msg.notice_text
- # # unschöne Lösung, da hier ein Fließtext ohne Layout-Möglichkeiten (z.B. backspace zwischen jeder neuen Zeile) entsteht
- # # bessere Variante: for-Schleife in das Template (allMessages.html) auslagern
-
- #------------------ ab hier: schöne Variante --------------------
-
- relevant_notices = Notice.objects.all()
- relevant_notices = Notice.objects.filter(pub_start__lt=timezone.datetime.now())
- relevant_notices = Notice.objects.filter(pub_end__gt=timezone.datetime.now())
- # all diese Befehle importieren noch NHCTS aus der Datenbank! Sie bauen nur einen SQL-Zugriffs-Befehl auf (mit entsprevchender Filterung) und erst beim Auslesen wird auf Datenbank zugegriffen
-
- context = { "notices" : relevant_notices }
-
- return render(request, 'posts/allMessages.html', context)
-
-
- from posts.forms import NoticeForm
- from django.shortcuts import redirect
-
- def new(request):
- #return HttpResponse("Eingabe einer neuen Nachricht!")
- if request.method == "POST":
- eingabeFenster = NoticeForm(request.POST)
- if eingabeFenster.is_valid():
- newNotice = Notice(notice_title = eingabeFenster.cleaned_data['title'],
- notice_text = eingabeFenster.cleaned_data['text'],
- pub_start = eingabeFenster.cleaned_data['start'],
- pub_end = eingabeFenster.cleaned_data['end'])
- newNotice.save()
- return redirect('index')
- context = {'form' : NoticeForm() }
- return render(request, 'posts/edit.html', context)
-
- def delete(request, id):
- msg_to_delete = Notice.objects.get(id = id)
- msg_to_delete.clean()
- return redirect('index')
-
-
-
- from posts.models import Notice
- from posts.serializers import NoticeSerializer
- from django.http import JsonResponse
- from rest_framework.parsers import JSONParser
-
- from django.views.decorators.csrf import csrf_exempt
-
- @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)
- else:
- return JsonResponse(serializer.errors, status=400)
-
- else:
- return HttpResponse(status=405)
-
- @csrf_exempt
- def notice_detail(request, id):
- try:
- notice = Notice.objects.get(id=id)
- except:
- 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)
- else:
- return JsonResponse(serializer.errors, status=400)
-
- elif request.method == 'DELETE':
- notice.delete()
- return HttpResponse(status=204)
-
- else:
- return HttpResponse(status=405)
-
|