Каким образом можно передать информацию из базы данных в HTML страницу?

Как можно загрузить данные из базы данных PostgreSQL на сайт, созданный с использованием Django REST framework (DRF) и шаблонов страниц?
  • 6 апреля 2024 г. 3:29
Ответы на вопрос 2
Для передачи информации из базы данных в HTML страницу можно воспользоваться языком программирования, таким как Python, и фреймворками, например Django. 

Для загрузки данных из базы данных PostgreSQL на сайт, созданный с использованием Django REST framework (DRF) и шаблонов страниц, следует выполнить следующие шаги:

1. Создать модели данных в Django для взаимодействия с базой данных PostgreSQL.
2. Создать сериализаторы в DRF для преобразования данных из моделей в формат JSON.
3. Создать API views в DRF для обработки запросов и возврата данных в формате JSON.
4. На frontend-части сайта использовать AJAX запросы для получения данных через API views.
5. Для шаблонов страниц использовать Django templates и передавать данные в виде контекста.

Таким образом, данные из базы данных PostgreSQL будут загружены на сайт с помощью DRF и шаблонов страниц.
покажу на своём простом примере. 

.создаём нужную модель:
# models.py
class Violation(models.Model):
    rules = models.TextField('Правила')
    consequences = models.TextField('Последствия нарушения')

    def __str__(self):
        return self.rules

    class Meta:
        verbose_name = 'Нарушение'
        verbose_name_plural = 'Нарушения'


потом проводим миграции в терминале:
python manage.py makemigrations
миграции требуются, чтобы джанго создал нужную "сетку" в базе данных, чтобы потом туда созранять данные.

после чего создаём обьекты модели или в панели администратора или через команду в пайтон:
Violation.objects.create(title=title, violations=violations)

объекты будут хранится в базе данных.

в представлении, где мы рендерим страницу, получаем все объекты модели Violation из базы данных и формируем словарь "context " в который передаём ключи с полученными обьектами.(в данном случае передаём объект violations': violations)
# views .py
def rules(request):
    # Получаем все объекты модели Violation из базы данных
    violations = Violation.objects.all()

    # Передаем объекты модели в контекст шаблона
    context = {
        'title': 'rules',
        'violations': violations,
    }

    return render(request, 'main/rules.html', context)


чтобы переданные объекты обработать в HTML в джанго предусмотрены шаблонные переменные в формате {{ }}
смотрим наш HTML который будет рендерить джанго:

{% extends 'application_in_question/base.html' %}

{% block title %}
{{ title }}
{% endblock %}

{% block content %}
<div class="light_pink_font_color">
    <h1><b>Правила и наказания</b></h1>
</div>
<div>
    <table class="custom_table">
        <thead>
            <tr>
                <th><b>Правила</b></th>
                <th><b>Наказания</b></th>
            </tr>
        </thead>
        <tbody>
            {% for violation in violations %}
            <tr>
                <td>{{ violation.rules }}</td>
                <td><b>{{ violation.consequences }}</b></td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</div>
{% endblock %}


тут мы видим наш тайтл {{ title }} и цикл for в котором перебираем "предметы" всех обьектов {{ violations }}
{% for violation in violations %}
            <tr>
                <td>{{ violation.rules }}</td>
                <td><b>{{ violation.consequences }}</b></td>
            </tr>
            {% endfor %}
Похожие вопросы