UNIXAWESOME

Django. Создать и запустить проект

#django #python

django-logo.png

Если коротко то 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

Скрипт manage.py используется для создания приложений, работы с базами данных и запуска веб-сервера разработки.

Запускаем сервер

1cd mysite
2python manage.py runserver

Для просмотра переходим в браузере http://127.0.0.1:8000/

django-server.png

Всё просто.

Веб-сайт может состоять из одного или нескольких разделов. Например, основной сайт, блог, вики, область загрузок и т.д. 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'

Есть еще два параметра, о которых следует знать:

При старте сервера нас просят применить миграции к базе. Сделаем это.

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 Как видим страница изменилась. Вот таким способом создаётся основная структура.

Пробуйте у вас должно получится)