UNIXAWESOME

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

#python

django-logo.png

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

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

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

cd mysite
python manage.py runserver

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

django-server.png

Всё просто.

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

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

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

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

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

Reply to this post by email ↪

Or share: