Веб-программирование → Основы Django фреймворка

В предыдущей статье я рассказал как создать django проект и запустить его. Здесь я расскажу из чего состоит Django и как на нем сделать простое веб-приложение. 

Расскажу о трех важных вещах в Django:

1. urls - пути сайта
2. views - обработчики или контроллеры(вьюшки)
3. templates - шаблоны(html - файлы)
 

Цикл всех статей про Django:

1. Создаем веб-приложение на Django 4.0.4
2. Основы Django фреймворка
3. Статические файлы (js, css, картинки) в Django
4. Расширение html-файлов в Django
5. Регистрация в Django
6. Модели и Базы данных в Django

1. Urls - пути (или урлы)

В прошлой статье мы создали проект с названием mysite. Можете открыть весь ваш проект в PyCharm

У вас должна быть примерна такая структура проекта:

В папке mysite у есть файл urls.py, в котором перечислены какие страницы(пути) есть в вашем веб-приложении. В начале проекта этот файл выглядит так:

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

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

Тут есть только один путь - путь в админку сайта.

Для джанго не важно где находится ваш сайт, по каком ip-адресу, домену или на каком порту он стоит. Пусть хоть entezeer.com, master.ru, 120.122.33.3 или localhost:8000. Ему важно что идет за названием сайта т.е. путь.

Например если мы откроем страницу http://localhost:8000/profile/, то Джанго будет смотреть только на часть после http://localhost:8000/, а именно на profile/. И на основе этой пути, Django будет думать как обработать или что показать. И все вот такие пути, которые могут быть на нашем сайте мы должны прописать в файле urls.py.

Сейчас нам нужно создать две страницы: Главную и страницу контактов например. У главной страницы всегда путь пустой, потому что она отображается когда мы вводим только адрес сайта. А у страницы контактов пусть будет путь contacts/. Укажем это в файле urls.py перед путью в админку:

urlpatterns = [
    path('', HomeView.as_view()),
    path('contacts/', ContactsView.as_view()),

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

В функцию path() мы сначала передаем часть пути и через запятую мы пишем что будет обрабатывать запрос на эту страницу. В нашем случаем это классы HomeView и ContactsView, которые мы создадим ниже. PyCharm будет показывать ошибку что HomeView и ContactsView не найдены. Пока не обращайте на это внимания, мы их создадим позже.

2. Views - обработчики (или вьюшки)

Вьюшки это самая важная часть Django приложения, они будут обрабатывать запросы, решать что нужно делать и отправлять ответ пользователю. Вся бизнес-логика будет начинаться здесь.

Они принимают запрос(request) и возвращают ответ(response). В Джанго есть много разных типов вьюшек, для разных задач. Мы будем использовать TemplateView, который умеет рендерить(создавать) html-страницы по шаблону. А Шаблонами в джанго также являются html-файлы, которые могут содержать разные django-команды и операции. 

Теперь продолжим создавать сайт. Для вьюшек мы создадим файл views.py в папке mysite рядом с файлом urls.py. И в нем создадим два класса HomeView  и ContactsView, которые будут наследовать класс TemplateView. 

from django.views.generic import TemplateView


class HomeView(TemplateView):
    pass


class ContactsView(TemplateView):
    pass

Наши классы пока пустые. Как видите я импортировал TemplateView из пакета django.views.generic. В PyCharm можно сделать импорт с помощью Alt-Enter, если вы не хотите сами писать from ... import ... 

Теперь для этих классов укажем какие шаблоны они будут использовать. Для этого внутри класса укажем поле template_name. 

class HomeView(TemplateView):
    template_name = "home.html"


class ContactsView(TemplateView):
    template_name = "contacts.html"

Эти шаблоны мы создадим ниже, а до этого мы должны классы HomeView  и ContactsView подключить в файл urls.py, так как, мы там на них ссылаемся. Для этого откройте urls.py и рядом с другими импортами напишите:

from mysite.views import HomeView, ContactsView

Или можете также Alt-Enter использовать в PyCharm (Поставьте курсор ввода на HomeView и нажмите Alt+Enter (Option+Enter на Mac) и затем выберите пункт Import).

Теперь перейдем к шаблонам. 

3. Templates - шаблоны (html - файлы)

Шаблоны это обычные html-файлы, где мы пишем обычный html-код наших страниц, чтобы отобразить их потом в браузере. Также шаблоны могут содержать разные django-команды и операции, чтобы мы там могли по разному отображать наши данные.

Шаблоны могут быть переиспользованы, расширены, наследованы, подключаться друг в друга и т.д. Но про это потом.

Они обычно находятся в папке templates. Создайте папку templates внутри папки mysite. Чтобы у вас было так:

Затем откройте файл settings.py и найдите константу INSTALLED_APPS и добавьте наш mysite в конец списка

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysite'
]

INSTALLED_APPS - это все подключенные django аппы в наш проект. Как вы видите, там уже есть несколько аппов, которые заранее подключены. Т.е. наш проект по умолчанию умеет делать некоторые вещи. Чтобы мы могли свое приложение сделать и использовать, наш апп тоже сюда нужно зарегистрировать. 

Обычно Django берет шаблоны из папки templates каждого аппа.

Теперь Django знает  где мы собираемся создавать шаблоны. Создадим два html-файла в папке templates: home.html и contacts.html.

home.html:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Главная страница сайта</title>
</head>
<body>

<h1>Это Главная страница сайта</h1>

</body>
</html>

contacts.html:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Контакты</title>
</head>
<body>

<h1>Контакты</h1>

<dl>
    <dt>Email</dt>
    <dd>masteraalish@gmail.com</dd>

    <dt>Tel</dt>
    <dd>+996 778 999 999</dd>
</dl>

</body>
</html>

Шаблоны готовы. Теперь запустим сайт с командной строки:

python manage.py runserver

Или в PyCharm  сверху нажмите на зеленую треугольную кнопку 

Откройте браузер по адресу localhost:8000 и вы должны увидеть текст "Это главная страница сайта". Затем откройте страницу localhost:8000/contacts/ и вы увидите страницу контактов.

На этом все.

В Html файле вы можете прописывать все что вы хотите. Подключать JS скрипты и стили CSS например. 

Следующая статья про Django:  Статические файлы (js, css, картинки) в Django

3963 3
Alisher Alikulov