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