53 lines
1.6 KiB
Python

from django.views.generic.base import TemplateView
from django.views.generic.edit import DeleteView
from .forms import TodoForm, TodoEditForm
from .models import Todo
from django.shortcuts import redirect, render
from django.urls import reverse_lazy
class TodoListView(TemplateView):
template_name = "todolist/list.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["todos"] = Todo.objects.all()[:5]
return context
class TodoCreateView(TemplateView):
template_name = "todolist/create.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["form"] = TodoForm()
return context
def post(self, request):
form = TodoForm(request.POST)
if form.is_valid():
form.save()
return redirect("list")
return render(request, "create.html", {"form": form})
class TodoEditView(TemplateView):
template_name = "todolist/edit.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
id = kwargs["id"]
todo = Todo.objects.get(id=id)
context["form"] = TodoEditForm(instance=todo)
return context
def post(self, request, id):
todo = Todo.objects.get(id=id)
form = TodoEditForm(request.POST, instance=todo)
if form.is_valid():
form.save()
return redirect("list")
return render(request, "edit.html", {"form": form})
class TodoDeleteView(DeleteView):
model = Todo
success_url = reverse_lazy("list")