Если коротко то Django - это веб-фреймворк Python высокого уровня, который позволяет быстро разрабатывать безопасные и поддерживаемые веб-сайты.
Нам необходим Python, чем свежее, тем лучше. Если его нет в системе, то устанавливаем
Далее устанавливаем virtualenv.
Virtualenv — это утилита, которая позволяет создавать изолированные виртуальные окружения для Python.
pip install virtualenv
Создаём виртуальное окружение c указанием конкретной версии Python.
virtualenv -p /sbin/python3.9 venv
Название папки venv
может быть любым. Чаще всего используют это или .venv
чтобы папка была скрытой.
Активация окружения. Для активация окружения переходим в папку с проектом где создано окружение и выполняем:
source venv/bin/activate
Обновляем менеджер пакетов pip
python -m pip install --upgrade pip
Устанавливаем Django
pip install django
Создаём проект
django-admin startproject mysite
В каталоге mysite создаётся структура будущего приложения.
mysite
├── db.sqlite3
├── manage.py
└── mysite
├── asgi.py
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-39.pyc
│ ├── settings.cpython-39.pyc
│ ├── urls.cpython-39.pyc
│ └── wsgi.cpython-39.pyc
├── settings.py
├── urls.py
└── wsgi.py
__init__.py
- это пустой файл, который указывает Python рассматривать этот каталог как пакет Python.settings.py
содержит все настройки веб-сайта, включая регистрацию любых создаваемых нами приложений, расположение наших статических файлов, сведения о конфигурации базы данных и т. д.urls.py
определяет сопоставление URL-адресов сайта и просмотра.wsgi.py
используется, чтобы помочь приложению Django взаимодействовать с веб-сервером.asgi.py
- это стандарт для асинхронных веб-приложений и серверов Python для взаимодействия друг с другом. ASGI является асинхронным преемником WSGI и обеспечивает стандарт как для асинхронных, так и для синхронных приложений Python (тогда как WSGI предоставил стандарт только для синхронных приложений).
Скрипт manage.py
используется для создания приложений, работы с базами данных и запуска веб-сервера разработки.
Запускаем сервер
cd mysite
python manage.py runserver
Для просмотра переходим в браузере http://127.0.0.1:8000/
Всё просто.
Веб-сайт может состоять из одного или нескольких разделов. Например, основной сайт, блог, вики, область загрузок и т.д. Django рекомендует разрабатывать эти компоненты как отдельные приложения, которые затем при желании можно использовать повторно в различных проектах.
Теперь создаём приложение блог, которое будет внутри нашего проекта mysite. Необходимо запускать эту команду из той же папки, что и manage.py вашего проекта:
python manage.py startapp blog
Структура проекта должна стать примерно такой:
mysite
├── blog
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── mysite
├── asgi.py
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-39.pyc
│ ├── settings.cpython-39.pyc
│ ├── urls.cpython-39.pyc
│ └── wsgi.cpython-39.pyc
├── settings.py
├── urls.py
└── wsgi.py
Теперь, когда приложение создано, мы должны зарегистрировать его в проекте, чтобы оно было включено при запуске любых инструментов (например, при добавлении моделей в базу данных). Приложения регистрируются путем добавления их в список INSTALLED_APPS
в настройках проекта.
Окрываем settings.py
и редактируем:
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Наше приложение блог
'blog',
]
...
Настройка базы данных
Здесь необходимо указать базу данных, которая будет использоваться для проекта.
По умолчанию используется sqlite3. Дополнительно про настройку базы можно почитать здесь https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Другие настройки проекта
Необходимо указать часовой пояс
TIME_ZONE = 'Europe/London'
Есть еще два параметра, о которых следует знать:
- SECRET_KEY. Это секретный ключ, который используется для безопасности веб-сайта Django.
- DEBUG. Этот параметр позволяет отображать журналы отладки при ошибке, а не ответы с кодом состояния HTTP. На боевом сервере должно быть установлено значение False, поскольку отладочная информация полезна для злоумышленников, но пока идёт разработка сайта мы можем оставить True.
При старте сервера нас просят применить миграции к базе. Сделаем это.
python manage.py migrate
Теперь создадим свой первый url на сайте http://127.0.0.1:8000/
. Для этого в файл mysite/urls.py
добавить строку. И он будет выглядеть как то так:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
Django теперь будет перенаправлять все запросы ‘http://127.0.0.1:8000' к blog.urls
и искать там дальнейшие инструкции.
Создаём новый пустой файл blog/urls.py
. И добавляем в него следующие две строки:
from django.urls import path
from . import views
После этого мы можем добавить наш первый URL-шаблон:
urlpatterns = [
path('', views.post_list, name='post_list'),
]
Теперь создадим нашу первую вьюху. В файле blog/views
напишем:
def post_list(request):
return render(request, 'blog/post_list.html', {})
Дальше создадим шаблон для нашей вьюхи. В папке blog
делаем папку templates
и в ней паку blog
и там файл post_list.html
.
Должен получится такой путь к шаблону: mysite/blog/templates/blog/post_list.html
<html>
<p>Django!</p>
<p>It works!</p>
</html>
Перезапускаем наш сервер и заходим http://127.0.0.1:8000
Как видим страница изменилась. Вот таким способом создаётся основная структура.
Пробуйте у вас должно получится)