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

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

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

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

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

1. Создаем веб-приложение на Django 3.0.6
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, которые мы создадим ниже.

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

Вьюшки это самая важная часть веб-приложения, они будут обрабатывать запросы, решать что нужно делать. Вся бизнес-логика будет начинаться здесь. Они принимают запрос(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. 

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

3. Templates - шаблоны (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'
]

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

home.html:

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

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

</body>
</html>

contacts.html:

<!DOCTYPE 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

2622 3
Alisher Alikulov