Всем салют, друзья! Продолжаем наш курс:
Вступайте в группу - vk.com/mrsisadm - там больше интересного!!!
В этой статье мы увидим, как получить данные, хранящиеся в базе данных, и отобразить их в шаблоне.
Итак, начнем.
Получение данных из PostgreSQL и отображение их в шаблоне
1. Сначала загрузите данные
Мы уже создали модель Job в приложении вакансий , которое имеет два поля ImageField и CharField: ImageField для хранения изображения для конкретной работы и TextField для хранения сводки об этой работе.
Скриншот модельной работы:
Снимок экрана панели администратора:
В настоящее время в нашей базе данных нет данных. Итак, давайте загрузим данные через админку. (мы также увидим, как загружать данные с помощью шаблонов в следующих статьях). Так что нажмите кнопку ДОБАВИТЬ ЗАДАНИЕ и загрузите несколько фотографий и текст.
Итак, я добавил два объекта Job. Теперь посмотрим, как их получить и распечатать по шаблону.
Теперь я собираюсь создать шаблон в приложении вакансий . Вы также можете создавать вне приложения, как мы создали в предыдущей статье. Но поскольку мы собираемся показывать задания в этом шаблоне, рекомендуется создать шаблоны, связанные с приложением вакансий, внутри приложения.
Итак, чтобы создать шаблон внутри приложения, сначала создайте каталог с именем шаблонов внутри приложения вакансий , а затем создайте каталог с тем же именем, что и приложение внутри шаблонов. Итак, наша структура каталогов будет выглядеть так:
Внутри этой папки вакансий мы создадим HTML-файл с именем myjobs.html.
3. Создайте URL-путь для шаблона.
Чтобы создать путь URL- адреса , откройте файл urls.py и добавьте путь для нашего вновь созданного шаблона myjobs.html.
В настоящее время в нашем urls.py есть только один путь, который мы также использовали для открытия панели администратора.
А теперь добавьте эту строку для загрузки изображений из 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 } )
Во второй строке мы импортировали нашу модель 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 /
Вот и все. Наконец, мы получили наши данные из базы данных и отобразили их в шаблоне.
Как это работает
Допустим, пользователь хочет получить доступ к веб-странице на нашем сайте, его запрос будет перенаправлен на urls.py. Например, пользователь пытается получить доступ к domain-name.com/myjobs/ (https: // localhost: 8000 / myjobs), поэтому его запрос будет перенаправлен на urls.py в поисках пути с «myjobs /» после имени домена.
- В urls.py у нас есть путь для myjobs (строка 10)
путь ( 'myjobs /' , views.showjobs) ,
После того, как запрошенный URL найден, запрос будет перенаправлен на функцию, указанную вместе с путем. В нашем случае это views.showjobs.
- В представлениях у нас есть функции под названием showjobs
который получает запрос и возвращает пользователю HTML-шаблон myjobs.html вместе со всеми объектами, хранящимися в базе данных.
Итак, теперь myjobs.html будет отображаться пользователю.
- На странице myjobs.html:
в шаблоне у нас есть все объекты модели Job, отправленные из функции showjobs . Итак, мы переберем все объекты, используя цикл for, и отобразим его.
Для отображения изображения мы использовали тег <img> и для печати сводки используется тег <p>.
Вот и все для этого урока.
Если у вас возникли какие-либо затруднения, пишите мне в коменты, будем разбираться).