def index(request): all_articles = Article.objects.all().order_by("-publish_date") paginator = Paginator(all_articles, 3) page = request.GET.get("page") if page is None: page = 1 try: articles_list = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. articles_list = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. articles_list = paginator.page(paginator.num_pages) return render_response(request, "index.html", {"articles": articles_list})
def edit_article(request, slug=None): if slug is None: # New Article success_message = "Your article was created successfully!" selected_article = Article(author=request.user) else: # Edit existing article success_message = "Your article was edited successfully!" selected_article = get_object_or_404(Article, slug=slug) if selected_article.author != request.user: raise HttpResponseForbidden() if request.method == "POST": form = ArticleForm(request.POST, instance=selected_article) if form.is_valid(): new_article = form.save() messages.info(request, success_message) return HttpResponseRedirect(reverse("article", args=[new_article.slug])) else: form = ArticleForm(instance=selected_article) return render_response(request, "edit-article.html", {"form": form})
def article(request, slug): selected_article = get_object_or_404(Article, slug=slug) return render_response(request, "article.html", {"article": selected_article})