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)