|
@@ -1,8 +1,45 @@
|
|
-from django.shortcuts import render
|
|
|
|
|
|
+from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.utils import timezone
|
|
from django.utils import timezone
|
|
from .models import Post
|
|
from .models import Post
|
|
|
|
+from .forms import PostForm
|
|
|
|
+
|
|
|
|
|
|
# Create your views here.
|
|
# Create your views here.
|
|
def post_list(request):
|
|
def post_list(request):
|
|
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
|
|
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
|
|
return render(request, 'blog/post_list.html', {'posts':posts})
|
|
return render(request, 'blog/post_list.html', {'posts':posts})
|
|
|
|
+
|
|
|
|
+def post_detail(request, pk):
|
|
|
|
+ # Failsafe version of:
|
|
|
|
+ # post = Post.object.get(pk=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":
|
|
|
|
+ # filled post details and submited
|
|
|
|
+ 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:
|
|
|
|
+ # Just opened new_post page
|
|
|
|
+ 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})
|