Найти в Дзене
IT - Это просто

Django - получение данных из PostgreSQL и отображение их в шаблоне

Оглавление

Всем салют, друзья! Продолжаем наш курс:

Вступайте в группу - vk.com/mrsisadm - там больше интересного!!!

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

Итак, начнем.

Получение данных из PostgreSQL и отображение их в шаблоне

1. Сначала загрузите данные

Мы уже создали модель Job в приложении вакансий , которое имеет два поля  ImageField  и CharField: ImageField для хранения изображения для конкретной работы и TextField для хранения сводки об этой работе.

Скриншот модельной работы:

-2

Снимок экрана панели администратора:

-3
-4

В настоящее время в нашей базе данных нет данных. Итак, давайте загрузим данные через админку. (мы также увидим, как загружать данные с помощью шаблонов в следующих статьях). Так что нажмите кнопку ДОБАВИТЬ ЗАДАНИЕ и загрузите несколько фотографий и текст.

-5

Итак, я добавил два объекта Job. Теперь посмотрим, как их получить и распечатать по шаблону.

2. Создайте шаблон
2. Создайте шаблон

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

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

-7

Внутри этой папки вакансий мы создадим HTML-файл с именем myjobs.html.

-8

3. Создайте URL-путь для шаблона.

Чтобы создать путь URL- адреса , откройте файл urls.py и добавьте путь для нашего вновь созданного шаблона myjobs.html.

В настоящее время в нашем urls.py есть только один путь, который мы также использовали для открытия панели администратора.

-9

А теперь добавьте эту строку для загрузки изображений из MEDIA_ROOT:

+ статический (settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

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

из django.conf.urls.static статический импорт

из настроек импорта django.conf

В итоге наш urls.py будет выглядеть так:

from django.contrib import admin

from django.urls import path

from jobs import views

from django.conf.urls.static import static

from django.conf import settings

urlpatterns = [

path('admin/', admin.site.urls),

path('myjobs/', views.showjobs),

] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

Теперь мы добавим еще один путь для перехода к шаблону myjobs .

urls.py:

from django.contrib import admin

from django.urls import path

from jobs import views

urlpatterns = [

path('admin/', admin.site.urls),

path('myjobs/', views.showjobs),

]

Итак, я добавил новый путь для моих заданий с двумя параметрами: первый - это URL-адрес для перехода к myjobs.html, а второй - это имя функции, которая будет описывать, что делать, когда кто-то открывает URL-адрес domain-name.com/ myjobs ', в нашем случае это https: // localhost: 8000 / myjobs .

Так что теперь мы создать функцию с именем , как showjobs внутри views.py в работе приложения. Если вам интересно, как мы можем получить доступ к файлу views.py приложения вакансий в urls.py, взгляните на третью строку в приведенном выше коде, где я импортировал представления приложения вакансий.

4. Создайте функцию для возврата шаблона.

Откройте файл views.py и добавьте функцию с именем showjobs.

views.py:

from django.shortcuts import render

from .models import Job

def showjobs(request):

jobs = Job.objects

return render(request, 'jobs/myjobs.html', { 'jobs':jobs } )

-10

Во второй строке мы импортировали нашу модель Job, чтобы получить доступ ко всем объектам Job, хранящимся в нашей базе данных. В строке 5 мы получаем все объекты из базы данных и сохраняем их в новой переменной с именем jobs. Наконец, мы передаем в шаблон эту переменную jobs с тем же именем ключа.

5. Измените файл шаблона, чтобы отобразить задания

myjobs.html:

{% for job in jobs.all %}

<img src="{{ job.image.url }}">

<br>

<p > {{ job.summary }}</p>

<hr>

{% endfor %}

Теперь запустите сервер и откройте ссылку ниже:

http: // локальный: 8000 / myjobs /

-11

Вот и все. Наконец, мы получили наши данные из базы данных и отобразили их в шаблоне.

Как это работает

Допустим, пользователь хочет получить доступ к веб-странице на нашем сайте, его запрос будет перенаправлен на urls.py. Например, пользователь пытается получить доступ к domain-name.com/myjobs/ (https: // localhost: 8000 / myjobs), поэтому его запрос будет перенаправлен на urls.py в поисках пути с «myjobs /» после имени домена.

  • В urls.py у нас есть путь для myjobs (строка 10)

путь ( 'myjobs /' , views.showjobs) ,

После того, как запрошенный URL найден, запрос будет перенаправлен на функцию, указанную вместе с путем. В нашем случае это views.showjobs.

  • В представлениях у нас есть функции под названием showjobs
-12

который получает запрос и возвращает пользователю HTML-шаблон myjobs.html вместе со всеми объектами, хранящимися в базе данных.

Итак, теперь myjobs.html будет отображаться пользователю.

  • На странице myjobs.html:

в шаблоне у нас есть все объекты модели Job, отправленные из функции showjobs . Итак, мы переберем все объекты, используя цикл for, и отобразим его.

-13

Для отображения изображения мы использовали тег <img> и для печати сводки используется тег <p>.

Вот и все для этого урока.

Если у вас возникли какие-либо затруднения, пишите мне в коменты, будем разбираться).