JavaRush /Курсы /Модуль 3: Django /Подключение Bootstrap к шаблонам Django

Подключение Bootstrap к шаблонам Django

Модуль 3: Django
5 уровень , 6 лекция
Открыта

В этой лекции мы узнаем, как подключить и использовать фреймворк Bootstrap для создания красивых и отзывчивых (responsive) пользовательских интерфейсов. Ведь что такое веб-приложение без "крашеного фасада"? Именно Bootstrap сделает ваш сайт более привлекательным, выразительным и удобным.

Введение в Bootstrap

Bootstrap — это популярный CSS-фреймворк, созданный командой Twitter. Он позволяет разработчикам быстро создавать современные, адаптивные (то есть хорошо отображающиеся на разных устройствах) веб-страницы, без необходимости писать тонны CSS с нуля.

Почему стоит использовать Bootstrap?

  • Адаптивный дизайн: одна и та же страница будет хорошо смотреться на ПК, планшете или смартфоне.
  • Богатый готовый функционал: кнопки, форма ввода, модальные окна, таблицы, навигация и многое другое — всё отлично проработано.
  • Минимизация времени верстки: вы тратите меньше времени на стилизацию и можете сосредоточиться на логике приложения.
  • Большое сообщество: это означает хорошую документацию, примеры и готовые решения.

Кратко говоря, вам не нужно изобретать велосипед, чтобы добавить стиль и функциональность на ваш сайт.

Шаги интеграции Bootstrap в Django

Давайте добавим Bootstrap в ваш Django-проект. Мы будем использовать Content Delivery Network (CDN) — это самый простой и быстрый способ подключения. А в конце покажем, как можно подключить Bootstrap локально (например, если ваш проект работает без Интернета).

Шаг 1: Подключите Bootstrap через CDN

Откройте ваш базовый HTML-шаблон (например, base.html), который мы создали в одной из прошлых лекций, и добавьте ссылки на файлы CSS и JS Bootstrap.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}Django Application{% endblock %}</title>

    <!-- Подключение Bootstrap через CDN -->
    <link
            href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"
            rel="stylesheet"
            integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRK/sgv7f3qZbJ4Csd4yY5Kf0E2E1F6f/fXokc8mF"
            crossorigin="anonymous">

    {% block extra_css %}{% endblock %}
</head>
<body>
    <header>
        <!-- Пример меню с Bootstrap -->
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">Мой сайт</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarNav">
                    <ul class="navbar-nav">
                        <li class="nav-item">
                            <a class="nav-link active" href="#">Главная</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">О нас</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>

    <main class="container">
        {% block content %}{% endblock %}
    </main>

    <footer class="text-center">
        <p>&copy; 2023 Все права защищены</p>
    </footer>

    <!-- Подключение Bootstrap JS через CDN -->
    <script
            src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-pzjw8f+ua7Kw1TIqjicyFa/6pqsKa/Phuxr/scWDeQx5Loq7xJItP6omGA4t4Vd"
            crossorigin="anonymous"></script>
    {% block extra_js %}{% endblock %}
</body>
</html>

Что мы сделали:

  • Подключили CSS-файл Bootstrap для стилизации.
  • Добавили JS-файл Bootstrap, чтобы работать с интерактивными компонентами (например, модальными окнами).

Теперь все страницы, которые используют шаблон base.html, могут наслаждаться стилем Bootstrap.

Шаг 2: Применяем стили Bootstrap

Стили из Bootstrap применяются с помощью классов. Например, чтобы изменить стиль кнопки, добавьте класс btn btn-primary:

<a href="#" class="btn btn-primary">Нажми меня!</a>

Воспользуйтесь любым компонентом из официальной документации Bootstrap. Здесь масса готовых решений!

Примеры использования Bootstrap в Django

Пример 1: Обертывание текста в карточки

Карточки (cards) — очень полезный компонент Bootstrap, который часто используется для вывода информации:

<div class="card" style="width: 18rem;">
  <img src="https://via.placeholder.com/150" class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Заголовок карточки</h5>
    <p class="card-text">Это пример текста внутри карточки. Пишите, что хотите!</p>
    <a href="#" class="btn btn-primary">Подробнее</a>
  </div>
</div>

Пример 2: Отображение списка объектов в таблице

Допустим, у нас есть список пользователей, который мы передаем в шаблон через контекст:

def user_list_view(request):
    users = [
        {'id': 1, 'name': 'Иван', 'email': 'ivan@example.com'},
        {'id': 2, 'name': 'Мария', 'email': 'maria@example.com'},
    ]
    return render(request, 'user_list.html', {'users': users})

Теперь стилизуем таблицу с помощью классов Bootstrap:

<div class="container mt-5">
    <h2>Список пользователей</h2>
    <table class="table">
        <thead class="table-light">
            <tr>
                <th>ID</th>
                <th>Имя</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            {% for user in users %}
            <tr>
                <td>{{ user.id }}</td>
                <td>{{ user.name }}</td>
                <td>{{ user.email }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</div>

Теперь ваш список пользователей не только функционален, но и красив!

4. Локальное подключение Bootstrap

Иногда вам может понадобиться хранить Bootstrap-файлы локально, например, для тестирования в среде, где нет Интернета.

Шаг 1: Загружаем Bootstrap

Скачайте Bootstrap с официального сайта.

Шаг 2: Размещаем файлы в папке static

Создайте структуру для ваших статических файлов (если её ещё нет):

project/
    static/
        css/
        js/

Скопируйте CSS и JS-файлы Bootstrap в соответствующие папки. Например:

  • bootstrap.min.cssstatic/css/
  • bootstrap.bundle.min.jsstatic/js/

Должно получиться примерно так:

project/
├── myapp/
├── static/
│   ├── css/
│   │   └── bootstrap.min.css
│   ├── js/
│   │   └── bootstrap.bundle.min.js
└── templates/
    └── base.html

Шаг 3: Настраиваем шаблон для использования локальных файлов

Обновите шаблон base.html:

<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>

Должно получиться примерно так:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Мой Django сайт</title>
    <!-- Подключаем Bootstrap CSS -->
    <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
</head>
<body>

    <!-- Ваш основной контент -->

    <!-- Подключаем Bootstrap JS -->
    <script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>
</body>
</html>

Теперь Bootstrap подключен локально!

Примеры использования компонентов Bootstrap

Давайте добавим немного стиля в наш проект, начнем с чего-то простого, например, с <button>. Обычное нажатие кнопки никогда больше не будет скучным!

Пример: кнопки

Кнопки Bootstrap делают больше, чем просто «кликни на меня»:

<button type="button" class="btn btn-primary">Первичная</button>
<button type="button" class="btn btn-secondary">Вторичная</button>
<button type="button" class="btn btn-success">Успех</button>
<button type="button" class="btn btn-danger">Опасность</button>

Каждая кнопка получает свой стиль в зависимости от выбранного класса. Вы можете комбинировать их как захотите! И, задумайтесь, как такие кнопки привлекают внимание ваших пользователей.

Пример: Навигационная панель

С одной кнопкой вы не далеко уйдете. Давайте добавим навигационную панель, чтобы пользователь не потерялся. Вот базовый пример:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">МойСайт</a>
  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Переключить навигацию">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link active" aria-current="page" href="#">Главная</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Функции</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Цены</a>
      </li>
    </ul>
  </div>
</nav>

Этот код отобразит простую навигационную панель с несколькими ссылками. Вы можете добавлять и стилизовать ее на свой вкус, экспериментируя с различными классами и компонентами Bootstrap.

Что дальше?

Профессиональные интерфейсы начинаются с маленьких деталей. Теперь, когда Bootstrap у вас под рукой, вы вооружены для создания сайтов, которые не только работают, но и радуют глаз. Удачи в разработке! 🚀

1
Задача
Модуль 3: Django, 5 уровень, 6 лекция
Недоступна
Подключение Bootstrap через CDN
Подключение Bootstrap через CDN
1
Задача
Модуль 3: Django, 5 уровень, 6 лекция
Недоступна
Подключение Bootstrap через локальные файлы
Подключение Bootstrap через локальные файлы
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Максим Уровень 69
30 октября 2025
Если хотите протестировать bootstrap в своем тестовом проекте. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
Ivan Уровень 59
8 июля 2025
Если во второй задаче скачать в папку /static файлы бутстрап, то плагин вылетает с ошибкой. А если ничего не качать, то валидатор нормально засчитывает задачу.