Простой блог на Django - часть 15. Создание статических страниц
До этого момента мы создавали страницы с динамически генерируемым контентом, а тому, как создавать простые статичные страницы, особо внимания не уделялось. Давайте исправим это, тем более в нашем шаблоне как раз такая страница и есть - About называется.
Первым делом создаём приложение, которое будет называться pages. Далее в файле маршрутов pages/urls.py пропишем:
from django.urls import path
from . import views
app_name = 'pages'
urlpatterns = [
path('about/', views.AboutPagesView.as_view(), name='about'),
]
Возможно вы обратили внимание, что в этот раз мы используем функцию as_view() - связано это с тем, что здесь мы будем использовать встроенный механизм наследования Django. Если говорить начистоту, то особой необходимости в этом нет, цель лишь одна - показать, что в работе с шаблонами можно использовать и такой способ.
Далее прописываем ссылку на файл urls.py в главный файл с маршрутами /newapp/newapp/urls.py:
path('pages/', include('pages.urls')),
Что касается View функции, то она проста до невозможного:
from django.views.generic.base import TemplateView class AboutPagesView(TemplateView): template_name = 'pages/about.html'
А большего нам и не надо, ведь мы просто будем выводить статику из файла html, не передавая в шаблон каких-то дополнительных данных. То есть, достаточно будет в папке /templates создать файл pages/about.html с максимально простым содержимым:
Здесь будет новый шаблон
И теперь, если перейти по пути /pages/about/ то мы увидим содержимое страницы about.html От базового шаблона мы не производили здесь наследования, поэтому соответственно его элементы (шапка, подвал, стили и т. д.) не подгрузились.
Однако, если всё же есть необходимость в том, чтобы передать на такую страницу какую-то информацию, сделать это можно так:
from django.views.generic.base import TemplateView
class AboutPagesView(TemplateView):
template_name = 'pages/about.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'О компании'
context['text'] = 'Текст странички'
return context
В этом случае, к переменным в шаблоне можно будет обратиться следующим образом:
{{ title }}
{{ text }}
Весь же код шаблона, с учётом наследования от базового шаблона, будет таким:
{% extends "index.html" %}
{% block h1 %}
{{ title }}
{% endblock %}
{% block content %}
{{ text }}
{% endblock %}
Добавление статической картинки
В предыдущей заметке, когда я рассказывал о том, как прикреплять картинки к постам, мы для этих целей уже создали секцию image. Сама картинка у нас тоже есть, поскольку мы когда-то уже копировали весь шаблон в папку static. Всё что осталось сделать - это в шаблоне about.html переопределить соответствующую секцию:
{% load static %}
{% block image %} {% static "img/about-bg.jpg" %} {% endblock %}
Все изменения в коммите.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()