Привет всем! Сегодня мы познакомимся с темой, которая звучит как: Django — как пользоваться: начало 🙂
Собственно, рассказывать о том, что такое Django не буду (пришли вы сюда по поисковому запросу, а значит искали не просто так от скуки 🙂 ). Подробности как всегда в Wikipedia, или на сайте проекта.
Предыстория этой записи проста — нужно начинать работать с Django, но гора прочитанных статей и текстов ясности не добавила. Наткнулся на потрясающее видео, автор которых весьма просто и доходчиво объяснил азы работы с Django, но проблема — он рассматривал старую версию. Прошло время, версия обновилась, и бОльшая часть материала устарела, и с бОльшей частью аспектов работы с Django пришлось разбираться самостоятельно.
В этой записи я попробую поделиться мыслями по поводу установки, запуска, и создания простого двухстраничного сайта на локальной машине с помощью Django. Присоединяйтесь, будет весело 🙂
Итак, начнем с установки. Как всегда — установить библиотеку можно двумя путями либо через pip, либо через PyCharm.
Установка через pip (используется командная строка): pip install django
Установка через PyCharm:
File — Setting for project — Project interpreter — кнопочка Плюс (выделена красным):
и в открывшемся окошке вводим название библиотеки Django:
после чего устанавливаем библиотеку:
ВАЖНО: никакого ярлыка Django у вас на рабочем столе или в меню ПУСК не появится. Следуйте дальнейшим инструкциям 🙂 (данный комментарий написан под влиянием вопроса, который был получен с помощью Telegram от одного из читателей блога)
С установкой разобрались, начинаем творить 🙂
Самое интересное, что бОльшую часть работы в Django делается с помощью командной строки. А значит — открываем ее: cmd
Теперь переходим в папку, в которой будем разворачивать сайт. В моем случае это будет папка на диске С под названием DjangoProject. Переходим в нее:
Теперь нам нужно произвести начальную установку Django в эту папку. Для этого используем команду: django-admin startproject name_project, где name_project — имя вашего проекта (сайта). В моем случае это будет TestSite, а значит команда для начальной установки будет выглядеть следующим образом:
django-admin startproject TestSite
После отработки команды в нашей папке для проектов появится еще одна папка, которая будет иметь название вашего проекта:
внутри которой будет папка с именем проекта (внутри будут еще несколько файлов, о которых мы поговорим чуть позднее), и файл manage.py:
Именно из этой точки начинаем создание базы данных для сайта. Для этого используем команду python manage.py migrate, запускать которую нужно в папке, содержащей файл manage.py:
Как видно — итогом выполнения команды является файл с названием db.sqlite3, который является базой данных нашего сайта.
Основные подготовительные работы — закончены. Что бы убедиться в том, что установка прошла успешно запускаем встроенный в Django веб-сервер. Для этого используем команду python manage.py runserver:
после чего открываем в браузере адрес: 127.0.0.1:8000. Если вы видите нечто подобное:
- поздравляю, вы только что успешно установили Django, создали проект (каркас сайта), создали базу сайта 🙂 Кстати, вы наверняка заметили, что все запросы к сайту отображаются в командной строке, в которой вы ранее запустили веб-сервер 🙂 Но это так — лирическое отступление. Выключаем веб-сервер с помощью Ctrl+C, и…
Переходим к созданию страниц в нашем сайте. Как и договаривались — мы создадим две страницы:
— главная
— контакты
Для начала уточню, что с точки зрения логики Django — каждая страница сайта является отдельной аппликацией. Создаются они очень просто — с помощью команды python manage.py startapp name_page, где name_page — название вашей страницы:
python manage.py startapp page (Главная страница)
python manage.py startapp page2 (страница Контакты)
Как видно из скрина — у нас в папке проекта добавились еще две папки с именами наших страниц. Внутри каждой из папок — некоторое количество файлов, о которых мы поговорим чуть ниже.
Теперь нужно показать нашему Django-сайту, что у него добавились две страницы. Для этого в любом редакторе (я использую Notepad ++) открываем файл settings.py и находим раздел INSTALLED_APPS. По-умолчанию он выглядит приблизительно как-то так:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Добавляем в него пункты ‘page’ и ‘page2’, что бы файл принял такой вид (с помощью внесения этих записей мы говорим Django — у тебя добавились две страницы! Не забывай об этом!):
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#MyWebPage
'page',
'page2',
]
Важно: не забываем о запятых 😉
Напоминание о новых страницах добавили, теперь корректируем файл с названием urls.py (этот файл фактически является адресной книгой для Django — заглядывая в эти записи движок понимает, какую ссылку по какому адресу искать. По умолчанию файл выглядит вот так:
"""TestSite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
как видно — кроме страницы admin, доступной по адресу: http://127.0.0.1:8000/admin (не забывайте включить веб-сервер (если ранее вы его выключили), для этого используем команду: python manage.py runserver) — ничего в структуре сайта не имеется. Исправим эту ситуацию, и внесем следующие изменения в разделе urlpatterns и добавим библиотеку include, что бы файл принял следующий вид:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('page.urls')),
path('page2/', include('page2.urls')),
]
Что произошло? Мы только что объяснили, что в случае запроса адреса в стиле: НашСайт/ (тут мы пропустили название страницы, что бы она считалась главной) мы заглядываем в папку page, находим там файлик urls и выполняем инструкции внутри него. А если же запрос будет адресован на НашСайт/page2 — система должна найти папку Page2, файл urls и обработать инструкции внутри этого файла.
Теперь начинается самое интересное — в наших папках Page и Page2 создаем файлики с названием urls.py, внутри которых будет следующий текст:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
Если перевести на человеческий язык все, что мы только что добавили в файлы urls.py можно — все можно описать как: подключаем библиотеку Django и path, а потом начинаем показывать все, что указано в файле views.py
Для примера — модифицируем содержимое файла views.py в папке page, что бы он принял следующий вид:
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world. You\'re at the page 1.
')
И аналогично изменим файл views.py в папке page2, что бы он принял вид:
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world. You\'re at the page 2.
')
Сохраняем все изменения, и … если мы запустим веб-сервер (напоминаю: python manage.py runserver) и зайдем на адрес http://127.0.0.1:8000 — наш сайт уже будет показывать содержимое первой страницы (напоминаю, что согласно нашим настройкам в файле urls.py, расположенном в каталоге проекта страница с названием Page считается главной, открывающейся «по-умолчанию»):
а если мы изменим адрес на такой: http://127.0.0.1:8000/page2 — то мы увидим содержимое второй страницы:
На сегодня — все. Спасибо за вниманием 🙂 В следующей записи мы узнаем, как выводить на Django содержимое html-файла.
И да — в случае возникновения вопросов пишите в Telegram — иконка на него видна в правом нижнем углу 😉
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️