Post adding and editing forms
[django-girls.git] / blog / views.py
index f1c9b6826e28d894697ee9f61aed881d6dcd2983..38ae51ee7e872d349dd2bbfc90cf9203d8256dbb 100644 (file)
@@ -1,6 +1,7 @@
-from django.shortcuts import render, get_object_or_404
+from django.shortcuts import render, get_object_or_404, redirect
 from django.utils import timezone
 from .models import Post
+from .forms import PostForm
 
 def post_list(request):
        posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
@@ -9,3 +10,30 @@ def post_list(request):
 def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})
+
+def post_new(request):
+       if request.method == 'POST':
+               form = PostForm(request.POST)
+               if form.is_valid():
+                       post = form.save(commit=False)
+                       post.author = request.user
+                       post.published_date = timezone.now()
+                       post.save()
+                       return redirect('post_detail', pk=post.pk)
+       else:
+               form = PostForm()
+               return render(request, 'blog/post_edit.html', {'form': form})
+
+def post_edit(request, pk):
+       post = get_object_or_404(Post, pk=pk)
+       if request.method == 'POST':
+               form = PostForm(request.POST, instance=post)
+               if form.is_valid():
+                       post = form.save(commit=False)
+                       post.author = request.user
+                       post.published_date = timezone.now()
+                       post.save()
+                       return redirect('post_detail', pk=post.pk)
+       else:
+               form = PostForm(instance=post)
+               return render(request, 'blog/post_edit.html', {'form': form})