Создание списка и detail views

Начнем с создания представления для отображения списка должностей. Измените файл views.py приложения 'blog' следующим образом:

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.published.all()
    return render(request, 'blog/post/list.html', {'posts': posts})

Ты только что создал свой первый Django view. post_list представление принимает request в качестве единственного параметра. Помните, что этот параметр обязателен для всех представлений.

В этом представлении мы извлекаем все посты с опубликованным статусом.

Наконец, мы используем render(), чтобы отобразить список постов с заданным шаблоном. Эта функция принимает request в качестве параметра, путь к шаблону и переменные для визуализации заданного шаблона. Он возвращает объект HttpResponse с отображаемым текстом (обычно HTML-код). render() принимает во внимание контекст запроса, поэтому любая переменная, заданная обработчиками контекста шаблона, доступна для данного шаблона. Обработчики контекста шаблона являются просто вызываемыми, которые задают переменные в контексте. Вы узнаете, как использовать их в главе 3, расширяя приложение 'blog'.

Создадим второй view для отображения одного поста. Добавьте в файл views.py следующую функцию:

def post_detail(request, year, month, day, post):
    post = get_object_or_404(Post, slug=post,
                                   status='published',
                                   publish__year=year,
                                   publish__month=month,
                                   publish__day=day)
    return render(request,'blog/post/detail.html', {'post': post})

Это детальный view. Это представление отображает год, месяц, день и параметры POST, чтобы извлечь опубликованый пост с заданным slug и датой. Обратите внимание, что при создании модели Post мы добавили параметр unique_for_date в служебное поле.

Таким образом, мы обеспечим уникальность url-ов, и, мы можем извлечь одиночные посты по дате и url. На выносном элементе используется get_object_or_404() для получения требуемой учетной точки. Эта функция извлекает объект, который соответствует заданным параметрам, или запускает исключение HTTP 404 (не найдено), если объект не найден. Наконец, мы используем render() для визуализации полученной POST с помощью шаблона.

results matching ""

    No results matching ""