Часть вторая. Написание страницы и отслеживание URL

Здесь мы напишем страницы на HTML и научимся отслеживать их в проекте

Цель: Создать первые страницы и отследить их URL

Задачи:

  • Создать приложение в проекте

  • Создать страницы в приложении проекта

  • Отладка сервера проекта

Небольшой экскурс в историю

Весь интернет работает по одному основному протоколу и ряду дополнительных. Основной протокол – HTTP (от англ. HyperText Transfer Protocol — протокол передачи гипертекста). HTTP – это прикладной протокол передачи данных в сети. На текущий момент используется для получения информации с веб-сайтов. Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат.

HTTP был предложен в марте 1991 года Тимом Бернерсом-Ли, работавшим тогда в CERN, как механизм для доступа к документам в Интернете и облегчения навигации посредством использования гипертекста. Самая ранняя версия протокола HTTP/0.9 была впервые опубликована в январе 1992 года (хотя реализация датируется 1990 годом).

Шли годы и опасность в интернете росла. С возрастание угроз стало необходимо шифрование. Так появился HTTPS (от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста) — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов SSL и TLS, где SSL и TLS дополнили основной HTTP.

Для работы с HTTP протоколом существует свой язык – HTML. HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — стандартизированный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами; полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства.

Теперь вернёмся к нашему проекту. По возвращению, мы видим новый файл – db.sqlite3. Этот файл появился после запуска сервера. Он – наша база данных и понятно, пока, пустая.

Создание приложения

Переходим в терминал и пишем команду

python manage.py startapp blog

Мы создали новую директорию под названием blog. blog – это приложение для нашего проекта сайта «MySite».

Пишем страницу

Открываем views.py.

Пишем строку импорта новой библиотеки

from django.http import HttpResponse

Напишем простую функцию

def home(request):  
    return HttpResponse('<h2>Привет мир!</h2>')

Не забываем про pep8 (руководство по написанию кода на Python). Ссылка на полное руководство:

Теперь нам нужно её вызвать. Приступим.

В приложении blog создадим файл – urls.py. Для этого откроем папку с проектом. В моём случае это C:\Users\Valery\PycharmProjects\MySite\blog. Затем, создаём файл.

Обратимся к автоматически созданному файлу urls.py в папке C:\Users\Valery\PycharmProjects\MySite. Откроем его.

Построчно разберём код

from django.contrib import admin  
from django.urls import path  

urlpatterns = [  
    path('admin/', admin.site.urls),  
]

from django.contrib import admin – импорт библиотеки для создание панели администратора сайта.

from django.urls import path – импорт библиотеки для создание списка адресов страниц.

urlpatterns = [  
    path('admin/', admin.site.urls),  
]

Организация списка url-файлов

Скопируем кусок в C:\Users\Valery\PycharmProjects\MySite\blog\urls.py. Копируем всё, кроме библиотеки на панель администратора. То есть:

from django.urls import path  

urlpatterns = [  
    path('admin/', admin.site.urls),  
]

Заменим path('admin/', admin.site.urls), на path('', views.home),. Результат:

from django.urls import path  

urlpatterns = [  
    path('', views.home),  
]

Что мы сделали? Мы вызываем главную страницу нашего проекта, то есть (http://127.0.0.1:8000/blog/), а вызов идёт в файл views.py в приложении blog и обращается к функции home, которую мы создали.

Есть только 1 маленькая проблема – фатальная ошибка компиляции. Файл urls.py не «видит» файла views.py. Исправляем:

from . import views

from . означает, что импорт идёт из корневой для приложения директории, то есть C:\Users\Valery\PycharmProjects\MySite\blog\.

Хлебные крошки

Добавим последний штрих – хлебную крошку. Верстальщики называют хлебными крошками – имена ключевых объектов/директорий/файлов и т.п. Хлебные крошки – это навигационная цепочка на сайте. Свой название оно получило по аналогии с немецкой сказкой «Гензель и Гретель», в которой дети, когда их повторно завели в лес, не смогли найти дорогу обратно, так как вместо камешков оставили хлебные крошки, которые впоследствии склевали лесные птицы.

Теперь к делу. Итоговая вёрстка файла urls.py выглядит так:

from django.urls import path  
from . import views  

urlpatterns = [  
    path('', views.home, name='blog-home'),  
]

Теперь мы не заблудимся и вернёмся в главную директорию.

Если бы мы сейчас искали приложение blog, мы бы его не нашли. Дело в том, что в urls.py в директории C:\Users\Valery\PycharmProjects\MySite\ указана ссылка только на приложение admin. Исправим это.

from django.contrib import admin  
from django.urls import path, include  

urlpatterns = [  
    path('admin/', admin.site.urls),  
    path('blog/', include('blog.urls')),  
]

Мы подключаем ссылку blog и все её url-файлы командой include. Чтобы она работала, мы импортируем её во второй строке.

Запускаем сервер и проверяем.

Так и должно быть, так как на главной странице у нас ничего нет. Перейдём в blog.

Проверим admin

Победа.

Закрепление

Напишем ещё одну страницу для закрепления. Работаем в директории blog. Переходим в файл viewes.py и в нём пишем ещё одну функцию.

def contacts(request):  
return HttpResponse('<h2>Контакты</h2>')

Переходим в urls.py. Пишем новую ссылку:

urlpatterns = [  
    path('', views.home, name='blog-home'),  
    path('contacts/', views.contacts, name='blog-contacts'),  
]

Теперь у нас будет новый путь: http://127.0.0.1:8000/blog/contacts

Переходим на папку вверх в MySite. Заходим в файл urls.py и ничего там не меняем

Почему? Командой include('blog.urls') мы проверяем все ссылки второго уровня.

Запуск сервера. Проверка.

Всё работает.

Last updated