示例#1
0
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})
示例#2
0
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})
示例#3
0
def article(request, slug):
    selected_article = get_object_or_404(Article, slug=slug)
    return render_response(request, "article.html", {"article": selected_article})