Как правильно добавить на все страницы сайта форму?

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

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

# context_processors.py
from .forms import YourForm

def form_processor(request):
    return {'your_form': YourForm()}

2. Зарегистрируйте ваш контекстный процессор в настройках Django, в файле settings.py. Добавьте 'your_project.context_processors.form_processor' в список 'context_processors'.

# settings.py
TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'your_project.context_processors.form_processor',
            ],
        },
    },
]

3. Создайте базовый шаблон, в котором будет размещаться ваша форма. Обычно это файл с именем base.html или layout.html, который располагается в каталоге шаблонов вашего проекта. В вашем базовом шаблоне разместите код для отображения формы.

<!-- base.html -->
<html>
<head>
    <title>Ваш заголовок</title>
</head>
<body>
    <header>
        <!-- Верхнее меню -->
    </header>

    <main>
        {% block content %}
        {% endblock %}
    </main>

    <footer>
        <!-- Подвал -->
    </footer>

    <!-- Форма -->
    <form method="post">
        {% csrf_token %}
        {{ your_form.as_p }}
        <button type="submit">Отправить</button>
    </form>
</body>
</html>

4. Теперь, когда у вас есть контекстный процессор и базовый шаблон, вы можете использовать этот базовый шаблон для всех остальных шаблонов вашего проекта. Для этого нужно указать, что ваш шаблон наследуется от базового шаблона, и заполнить блок content, как требуется.

<!-- другие шаблоны -->
{% extends 'base.html' %}

{% block content %}
<!-- ваш код -->
{% endblock %}

Теперь все ваши страницы будут содержать форму, которую вы определили в контекстном процессоре и разместили в базовом шаблоне. Вы можете изменить стиль формы или добавить дополнительные поля, в зависимости от ваших требований.