Зарегистрируйтесь, чтобы продолжить обучение

Список (CRUD) Python: Разработка на фреймворке Django

Любой CRUD начинается со списка сущностей, которые обычно представлены в табличном виде. Чтобы его реализовать, понадобится добавить маршрут, реализовать обработчик-вью и вывести данные в шаблоне. Еще нужно добавить тесты, но после того, как разберемся с фреймворком.

Начнем с маршрута в article/urls.py:

from django.urls import path

from hexlet_django_blog.article.views import IndexView

urlpatterns = [
    path('', IndexView.as_view()),
]

Следующий шаг — вью. Добавим содержимое в файл /hexlet_django_blog/article/views.py:

from django.shortcuts import render
from django.views import View

from hexlet_django_blog.article.models import Article

class IndexView(View):

    def get(self, request, *args, **kwargs):
        articles = Article.objects.all()[:15]
        return render(request, 'articles/index.html', context={
            'articles': articles,
        })

Первой строкой из базы извлекаются 15 первых статей. Django автоматически определяет наличие размера списка в запросе и выполняет правильное смещение в SQL.

Следующей строкой вызывается шаблон, в который передается контекст. Он предоставляет словарь из передаваемых параметров.

Осталось добавить шаблон /hexlet_django_blog/templates/articles/index.html:

{% extends "base.html" %}

{% block content %}
    <h1>Список статей</h1>
    {% for article in articles %}
        <h2>{{ article.name }}</h2>
        <div>{{ article.body|slice:":200" }}</div>
    {% endfor %}
{% endblock %}

Контекст, который передали в шаблон из контроллера, превращается в набор переменных. Именами становятся ключи, а содержимым — значения этих ключей в массиве. В нашем примере это articles. Обращаться к этим переменным можно двумя способами: либо в директивах напрямую, либо через интерполяцию {{}}. Последний вариант автоматически подставит вместо переменной ее значение.

Обход коллекции выполняется с помощью тега {% for %}, который выглядит идентично for самого Python.


Самостоятельная работа

  1. Выполните все шаги из теории
  2. Убедитесь, что при запросе страницы /articles у вас выводятся статьи, которые вы создали ранее
  3. Добавьте в общий макет меню, в котором есть ссылка на articles

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»