Django — что это такое, порядок установки

Введение

  • Django — это веб-фреймворк, написанный на Python.
  • Python — это высокоуровневый интерпретируемый язык программирования общего назначения.
  • API (Application Programming Interface, интерфейс приложения) — это набор правил и механизмов, посредством которых приложение или его части взаимодействуют с другими приложениями.
  • REST (Representational State Transfer) — это программная архитектура интерфейсов REST.

Как сказано в диссертации Роя Филдинга: «REST — это архитектурный стиль, который в основном использует существующие технологии и протоколы интернета. Попросту говоря, это представление данных для клиента в подходящем для него формате.»

Следовательно, RESTful + API (интерфейс) является широко используемой терминологией для реализации такой архитектуры и связанных с ней ограничений (например, в веб-сервисах).

Вот пример запроса из интерфейса Github:

Вы получите примерно следующее:

{
  "login": "joshuadeguzman",
  "id": 20706361,
  "node_id": "MDQ6VXNlcjIwNzA2MzYx",
  "avatar_url": "https://avatars1.githubusercontent.com/u/20706361?v=4",
  "gravatar_id": "",
  "url": "https://api.github.com/users/joshuadeguzman",
  "html_url": "https://github.com/joshuadeguzman",
  "followers_url": "https://api.github.com/users/joshuadeguzman/followers",
  "following_url": "https://api.github.com/users/joshuadeguzman/following{/other_user}",
  "gists_url": "https://api.github.com/users/joshuadeguzman/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/joshuadeguzman/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/joshuadeguzman/subscriptions",
  "organizations_url": "https://api.github.com/users/joshuadeguzman/orgs",
  "repos_url": "https://api.github.com/users/joshuadeguzman/repos",
  "events_url": "https://api.github.com/users/joshuadeguzman/events{/privacy}",
  "received_events_url": "https://api.github.com/users/joshuadeguzman/received_events",
  "type": "User",
  "site_admin": false,
  "name": "Joshua de Guzman",
  "company": "@freelancer",
  "blog": "https://joshuadeguzman.me",
  "location": "Manila, PH",
  "email": null,
  "hireable": true,
  "bio": "Android Engineer at @freelancer. Building tools for humans.",
  "public_repos": 75,
  "public_gists": 2,
  "followers": 38,
  "following": 10,
  "created_at": "2016-07-28T15:19:54Z",
  "updated_at": "2019-06-16T10:26:39Z"
}

Получен набор данных в формате JSON.

JSON ( JavaScript Object Notation) — это открытый файловый формат, в котором обычный текст используется для передачи объектов данных, состоящих из пар атрибут-значение и типов данных массива. Конечно, существуют и другие форматы, такие как XML, INI, CSV и так далее. Но на сегодняшний день, JSON, благодаря своей интуитивной и понятной структуре, применяется крайне широко вне зависимости от того, какой язык программирования используется.

Ресурсы по Django REST

  • Обзор «Как разрабатывать API при помощи фреймворка Django REST» (How to Develop APIs with Django REST Framework) описывает все шаги по созданию API при помощи Django REST, начиная со среды разработки. В обзоре используется подход под названием «Разработка через тестирование» (test-driven development, TDD).
  • Официальное руководство — это один из лучших источников информации для любого проекта с открытым исходным кодом. Также много полезной информации можно найти на официальном сайте фреймворка.
  • Django: создание REST API — это первая часть великолепной серии статей про данный фреймворк (DRF). Вот остальные части:

    • Знакомимся с DRF (Django REST Framework: Getting Started).
    • Сериализаторы (Django REST Framework: Serializers).
    • Сериализаторы моделей и генераторы представлений (Django REST Framework: ModelSerializer and Generic Views).
    • ViewSet, ModelViewSet и маршрутизаторы (Django REST Framework: ViewSet, ModelViewSet and Router).
    • Аутентификация и разрешения (Django REST Framework: Authentication and Permissions).
    • JSON веб-токены (Django REST Framework: JSON Web Tokens (JWT)).
  • Статья «Как оптимизировать ваши представления Django REST» (How to Optimize Your Django REST Viewsets) дает пошаговую инструкцию (с конкретными примерами), как избежать большого количества ненужных запросов, используя методы  и  в слоях Django ORM.
  • Как сохранить дополнительные данные в сериализаторе Django REST ( How to Save Extra Data to a Django REST Framework Serializer)  — это краткое и удобное руководство для объединения дополнительных данных с уже определенными полями сериализатора DRF перед сохранением всего в базу данных или аналогичным действием.
  • Интерфейс запросов в Django REST Framework (Django polls api using Django REST Framework) — это отличное руководство по созданию серверной части приложения для запросов (пошаговый разбор кода прилагается).
  • Статья «Глубокий разбор классов permission в Django REST Framework» (Django REST Framework Permissions in Depth) содержит примеры кода и объясняет разницу между классами permission и authentication.
  • Оптимизация производительности Django REST Framework (Optimizing slow Django REST Framework performance).
  • Сериализация данных авторизованных пользователей в Django REST Framework (TLT: Serializing Authenticated User Data With Django REST Framework).
  • Создание API и представлений на основе классов с помощью Django REST Framework (Building an API with Django REST Framework and Class-Based Views).
  • Простой вложенный API с использованием Django REST Framework (Simple Nested API Using Django REST Framework)
  • Создание API в Django и Django Rest Framework (Building APIs with Django and Django Rest Framework)

Установка Django через pipenv

Для того чтобы оценить в действии, создадим новую директорию и установим Django. Первым делом переместимся на рабочий стол Desktop. Там будет создана новая директория , куда нам нужно будет попасть при помощи команды .

Shell

$ cd ~/Desktop
$ mkdir django
$ cd django

1
2
3

$cd~Desktop

$mkdirdjango

$cddjango

Теперь используем Pipenv для инсталляции Django.

Shell

$ pipenv install django==3.0

1 $pipenv install django==3.0

Если загляните внутрь нашей папки, то увидите, что в ней появилось два новых файла: и . Теперь у нас есть вся информация, необходимая для создания нового виртуального окружения, однако пока ничего не активировано. Исправим положение через .

Shell

$ pipenv shell

1 $pipenv shell

При работе на Ubuntu вы увидите, что название текущей директории в командной строке взято в скобки. Это значит, что виртуальное окружение активировано. Будучи внутри папки , перед знаком командной строки мы увидим .

Стоит иметь в виду, что из-за в системе Windows, сейчас нет возможности получить визуальное подтверждение об активации виртуального окружения. Однако в следующей секции можно запустить — тогда станет ясно, что виртуальное окружение Django установлено должным образом.

Shell

(django) $

1 (django)$

Все работает! Теперь создаем новый проект Django под названием при помощи следующей команды. Не забудьте в конце поставить точку.

Shell

(django) $ django-admin startproject test_project .

1 (django)$django-admin startproject test_project.

Немного остановимся на причине использования точки (.) в предыдущей команде. Если вы просто запустите то Django по умолчанию создаст следующую структуру:

Структура

Shell

└── test_project
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

1
2
3
4
5
6
7

└──test_project

├──manage.py

└──test_project

├──__init__.py

├──settings.py

├──urls.py

└──wsgi.py

Как видите, создается новая директория , в ней файл и еще одна директория . Чувствуется повторение, ведь ранее мы уже создали директорию на рабочем столе и переместились в нее. Будет лучше выполнить команду с точкой на конце. Это нужно для установки в данную конкретную папку — на сей раз результат будет таков:

Структура 

Shell

├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

1
2
3
4
5
6

├──manage.py

└──test_project

├──__init__.py

├──settings.py

├──urls.py

└──wsgi.py

Стоит отметить, что по сути особого значения не имеет, будет ли на конце команды точка или нет, однако но некоторые разработчики предпочитают ее включать.

Осталось убедиться, что все работает. Для этого запустим локальный веб-сервер Django.

Shell

(django) $ python manage.py runserver

1 (django)$python manage.pyrunserver

Мы получим такой ответ:

Shell

Watching for file changes with StatReloader
Performing system checks…

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.

May 05, 2020 — 12:36:09
Django version 3.0, using settings ‘test_project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

1
2
3
4
5
6
7
8
9
10
11
12

Watching forfilechanges with StatReloader

Performing system checks…

System check identified no issues(silenced).

You have17unapplied migration(s).Your project may notwork properly untilyou apply the migrations forapp(s)admin,auth,contenttypes,sessions.

Run’python manage.py migrate’toapply them.

May05,2020-123609

Django version3.0,using settings’test_project.settings’

Starting development server athttp127.0.0.18000

Quit the server with CONTROL-C.

При посещении откроется следующая страница:

Приветственная страница Django

Для остановки локального сервера используйте комбинацию . После этого выйти из виртуального окружения можно при помощи команды .

Shell

(django) $ exit

1 (django)$exit

Вновь активировать виртуальное окружение можно в любое время. — для этого используется команда в терминале.

Если вы сталкиваетесь с виртуальными окружениями впервые, сейчас они могут показаться немного запутанными, но не беспокойтесь — по ходу изучения все прояснится. Базовый принцип строится на установке новых пакетов через , их активации с и выхода через по мере завершения процесса.

Будет не лишним отметить, что через командную строку за раз можно активировать только одно виртуальное окружение. Мы будем создавать новое виртуальное окружение для каждого проекта. По этой причине перед созданием нового проекта не забывайте выходить из текущего окружения через или открывайте другие вкладки для новых проектов.

Плюсы Джанго

Принцип «Всё включено» («Batteries included»)

Фраза «всё включено» означает, что большинство инструментов для создания приложения — часть фреймворка, а не поставляются в виде отдельных библиотек.

Django содержит огромное количество функциональности для решения большинства задач веб-разработки. Вот некоторые из высокоуровневых возможностей Django, которые вам придётся искать отдельно, если вы предпочтёте микро-фреймворк:

  • ORM
  • Миграции базы данных
  • Аутентификация пользователя
  • Панель администратора
  • Формы

Стандартизированная структура

Django как фреймворк задаёт структуру проекта. Она помогает разработчикам понимать, где и как добавлять новую функциональность.

Благодаря одинаковой для всех проектов структуре гораздо проще найти уже готовые решения или получить помощь от сообщества. Огромное количество увлеченных разработчиков поможет справиться с любой задачей гораздо быстрее.

Приложения Django

Приложения в Django позволяют разделить проект на несколько частей. Приложения устанавливаются путём добавления в settings.INSTALLED_APPS. Этот подход позволяет легко интегрировать готовые решения.

Сотни универсальных модулей и приложений очень сильно ускорят разработку. Взгляните на их список на сайте djangopackages.org.

Безопасный по умолчанию

Django безопасен из коробки и включает механизмы предотвращения распространенных атак вроде SQL-инъекций (XSS) и подделки межсайтовых запросов (CSRF). Подробнее об этом можно почитать в официальном руководстве по безопасности.

REST Framework для создания API

Django REST Framework, который часто сокращают до «DRF», является библиотекой для построения API. Он имеет модульную и настраиваемую архитектуру, которая хорошо работает для создания как простых, так и сложных API.

В DRF политики аутентификации и разрешений доступны из коробки. Он поставляется с базовыми классами для CRUD операций и встроенной утилитой для тестирования разрабатываемого API.

GraphQL фреймворк для создания API

Большие REST API часто требуют большого количества запросов для получения всех необходимых данных. GraphQL — это язык запросов, который позволяет обмениваться связанными данными гораздо проще. Подробнее почитать про основные концепции GraphQL можно в официальной документации.

Graphene-Django позволит легко добавить соответствующую функциональность в ваш проект. Модели, формы, аутентификация, политики разрешений и другие функциональные возможности Django можно использовать для создания GraphQL API. Библиотека так же поставляется с утилитой для тестирования результата.

Сервер для разработки¶

Давайте проверим, что все заработало. Перейдите во внешний каталог , если вы этого еще не сделали, и выполните команду:

$ python manage.py runserver

Вы увидите следующий вывод:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

January 24, 2020 - 15:50:53
Django version 1.9, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Примечание

Игнорируйте предупреждения о невыполненных миграциях, мы разберемся с этим позже

Только что вы запустили сервер для разработки Django, простой Web-сервер написанный на Python. Мы включили его в Django, чтобы вы сразу могли приступить к разработке, без дополнительной настройки боевого веб-сервера – например, Apache – пока вам это действительно не понадобится.

Следует заметить: НИКОГДА НЕ используйте этот сервер на “живом” сайте. Он создан исключительно для разработки. (Мы умеем делать Web-фреймворки, не Web-сервера.)

Теперь, когда сервер запущен, перейдите на страницу http://127.0.0.1:8000/ в браузере. Вы увидите страницу с “Welcome to Django”. Работает!

Поменять порт

По умолчанию, команда запускает сервер для разработки на локальном IP используя порт 8000.

Если вы хотите изменить порт, укажите его как аргумент. Например, эта команда запускает сервер используя порт 8080:

$ python manage.py runserver 8080

Если вы хотите изменить IP сервера, передайте его вместе со значением порта. Чтобы слушать все публичные IP (полезно, если вы хотите показать свою работу на других компьютерах), используйте:

$ python manage.py runserver 0.0.0.0:8000

Смотрите полное описание команды .

Создание проекта¶

Если вы используете Django первый раз, вам придется позаботиться о некоторых первоначальных настройках. А именно, сгенерировать основу Django – настройки проекта, базы данных, приложений и др.

Используя командную строку, перейдите в каталог, где вы хотите хранить код, и выполните следующую команду:

django-admin.py startproject mysite

Это создаст каталог mysite в текущем каталоге. Если нет, смотрите .

Примечание

Вы не должны использовать в качестве названия проекта названия компонентов Python или Django. Это означает, что проект не может называться django (что конфликтует с Django) или test (конфликтует со стандартным пакетом Python).

Where should this code live?

Если вы раньше использовали PHP, то, наверное, привыкли размещать код проекта в корневом каталоге сайта на Web-сервере (например, /var/www). C Django вы не должны этого делать. Это плохая идея добавлять код проекта в корень Web-сервера, так как есть риск, что он будет доступен для просмотра. Не делайте этого в целях безопасности.

Разместите код в каталоге вне корневой директории сайта, например /home/mycode.

Давайте посмотрим, что было создано при помощи команды :

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

Doesn’t match what you see?

Структура проекта по умолчанию была недавно изменена. Если вы видите “простую” структуру (без внутреннего каталога mysite/), возможно вы используете версию Django, которая не соответствует этому учебнику. Вам следует читать старую версию учебника или обновить Django.

Рассмотрим эти файлы:

  • Внешний каталог mysite/ – это просто контейнер для вашего проекта. Его название никак не используется Django, и вы можете переименовать его во что угодно.

  • manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py читайте в разделе django-admin.py and manage.py.

  • Внутренний каталог mysite/ — это пакет Python вашего проекта. Его название – это название пакета Python, которое вы будете использовать для импорта чего-либо из проекта (например, mysite.urls).

  • mysite/__init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Читайте в официальной документации Python, если вы новичок в Python.)

  • mysite/settings.py: Настройки/конфигурация проекта. Раздел Django settings расскажет вам все о настройках проекта.

  • mysite/urls.py: Конфигурация URL-ов для вашего проекта Django. Это “содержание” всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.

  • mysite/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Развёртывание с WSGI.

Сервер для разработки

Давайте проверим, что все заработало. Перейдите во внешний каталог mysite, если вы этого еще не сделали, и выполните команду python manage.py runserver. Вы увидите следующий вывод:

Validating models...

0 errors found
March 30, 2016 - 15:50:53
Django version 1.6, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Только что вы запустили сервер для разработки Django, простой Web-сервер написанный на Python. Мы включили его в Django, чтобы вы сразу могли приступить к разработке, без дополнительной настройки боевого веб-сервера – например, Apache – пока вам это действительно не понадобится.

Следует заметить: НИКОГДА НЕ используйте этот сервер на “живом” сайте. Он создан исключительно для разработки. (Мы умеем делать Web-фреймверки, не Web-сервера.)

Теперь, когда сервер запущен, перейдите на страницу http://127.0.0.1:8000/ в браузере. Вы увидите страницу с “Welcome to Django”. Работает!

Changing the port

По умолчанию, команда запускает сервер для разработки на локальном IP используя порт 8000.

Если вы хотите изменить порт, укажите его как аргумент. Например, эта команда запускает сервер используя порт 8080:

$ python manage.py runserver 8080

Если вы хотите изменить IP, передайте его вместе со значением порта. Чтобы слушать все публичные IP (полезно, если вы хотите показать свою работу на других компьютерах), используйте:

$ python manage.py runserver 0.0.0.0:8000

Смотрите полное описание команды .

Automatic reloading of

Dev-сервер самостоятельно перегружается при изменении файлов. Однако некоторые действия не перегружают сервер, например, добавление новых файлов или компилирование файлов перевода. В таких случаях необходимо самостоятельно перегрузить сервер.

Курсы для web-разработчика на Python Django

Много материалов по Python Django есть в свободном доступе. Тем, кто знаком с языком программирования Python и основами, достаточно изучить официальную документацию фреймворка и туториал для новичков. А людям, которые далеки от программирования, лучше сначала пройти онлайн-курс под руководством преподавателя — это поможет постичь азы, чтобы двигаться дальше в верном направлении.

Есть платные и бесплатные онлайн и очные курсы, видеолекции, книги, интернет-ресурсы. Дистанционные курсы длятся от месяца до полугода в зависимости от того, насколько насыщенная программа. Стоит обучение от 15–20 тыс. рублей. Многие онлайн-университеты выдают выпускникам, успешно защитившим дипломную работу, диплом международного образца и помогают в трудоустройстве.

Какими знаниями и навыками должен обладать будущий Django-разработчик

Минимальный пакет знаний junior Django-разработчика включает:

  • основы HTML для web-ресурсов;
  • Python, его структуры данных и библиотеки;
  • jQuery, CSS, Git, IDE или редактор кода;
  • английский язык (нужен для чтения документации, статей), но для начала достаточно уметь читать со словарем.

Будущий Django-разработчик должен развивать коммуникацию, ходить на конференции и прокачивать навык продажи своих умений (это позволит иметь зарплату выше рыночной). По мере накопления опыта крайне желательно изучать смежные отрасли, новые библиотеки.

Что нужно, чтобы стать junior Django:

Какие учебники и пособия будут полезны Django-программисту

Чтобы получить начальное понимание общих методов программирования и языка Python стоит изучить уроки Learn Python the Hard Way (есть на русском языке) или Google’s python class. Learn Python the Hard Way имеет смысл изучать до 42 урока — далее описываются достаточно сложные вещи, которые на начальном уровне не нужны. В Google’s python class желательно делать каждое упражнение, не подсматривая в ответы.

Программисты советуют новичкам книги:

  • Марк Лутц «Изучаем Python» (4-е издание);
  • Марк Лутц «Программирование на Python»;
  • Чед Фаулер «Программист-фанатик»;
  • Билл Любанович «Простой Python»;
  • Бен Форт «Освой самостоятельно SQL»;
  • Ultimate Django (пошаговые уроки по созданию приложения);
  • Джон Дакетт «HTML и CSS. Разработка и дизайн веб-сайтов»;
  • руководство TaskBuster Django Tutorial (на английском);
  • Дэвид Флэнаган «JavaScript. Подробное руководство».

Для начального понимания фреймворка достаточно освоить официальный учебник и документацию. Лучше сделать это дважды, чтобы понять, как взаимосвязаны все части. Легко подана информация на ресурсе Django Girls Tutorial (есть перевод на русский).

Более глубокое понимание Python дадут курсы Udacity’s intro CS class или Unit 1 of MIT’s intro CS course. Эти ресурсы почти взаимозаменяемы. После можно начинать практиковаться в создании простых приложений.

Есть огромная разница между беглым объемом знаний, необходимым для создания простого прототипа, и объемом знаний квалифицированного инженера-программиста. Поэтому не стоит останавливаться после изучения нескольких книг и выполнения упражнений из учебников.

Курсы Django Python для начинающих

Действительно полезные курсы для чайников начинаются с основ, просто изложены и логично переходят от одного пункта к другому. По окончанию обучения начинающий разработчик уже должен иметь знания, достаточные для создания первого проекта.

Необходимо сразу найти курс, где минимум 80 % времени уделено практике

Также желательно, чтобы обучение проводил практикующий разработчик уровня не ниже senior.

Как найти подходящий Django-видеокурс в Интернете

Можно самостоятельно разложить обучение Django Python на несколько частей и искать видео, лекции и упражнения по каждой теме, а можно найти готовый видеокурс. Последний вариант лучше для обучения с нуля, потому что в полном курсе материал будет подаваться дозировано и в одном стиле.

Для углубленного изучения и понимания сложных тем можно дополнительно находить отдельные видеолекции.

Возможно ли освоить Django Python за 1 час:

Активация моделей¶

Эта небольшая часть кода моделей предоставляет Django большое количество информации, которая позволяет Django:

  • Создать структуру базы данных (CREATE TABLE) для приложения.

  • Создать Python API для доступа к данным объектов Poll и Choice.

Но первым делом мы должны указать нашему проекту, что приложение polls установлено.

Philosophy

Приложения Django “подключаемые”: вы можете использовать приложение в нескольких проектах и вы можете распространять приложение, так как они не связаны с конкретным проектом Django.

Отредактируйте файл settings.py и измените настройку добавив строку 'polls'. В результате получим:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'polls',
)

Теперь Django знает что необходимо использовать приложение polls. Давайте выполним следующую команду:

python manage.py sql polls

Вы увидите приблизительно такое (SQL запросы CREATE TABLE для приложения голосования):

BEGIN;
CREATE TABLE "polls_poll" (
    "id" serial NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" timestamp with time zone NOT NULL
);
CREATE TABLE "polls_choice" (
    "id" serial NOT NULL PRIMARY KEY,
    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id") DEFERRABLE INITIALLY DEFERRED,
    "choice" varchar(200) NOT NULL,
    "votes" integer NOT NULL
);
COMMIT;

Обратите внимание на следующее:

  • Полученные запросы зависят от базы данных, которую вы используете.

  • Названия таблиц созданы автоматически из названия приложения(polls) и названия модели в нижнем регистре – poll и choice. (Вы можете переопределить это.)

  • Первичные ключи (ID) добавлены автоматически. (Вы можете переопределить и это.)

  • Django добавляет "_id" к названию внешнего ключа. (Да, вы можете переопределить и это.)

  • Внешний ключа определяется явно через REFERENCES.

  • Учитываются особенности базы данных, которую вы используете. Специфические типы данных такие как auto_increment (MySQL), serial (PostgreSQL), или integer primary key (SQLite) будут использоваться автоматически. То же касается и экранирование называний, что позволяет использовать в названии кавычки – например, использование одинарных или двойных кавычек. Автор этого урока использует PostgreSQL, так что примеры используют синтаксис PostgreSQL.

  • Команда не выполняет SQL запросы в базе данных — она просто выводит их на экран, чтобы вы могли увидеть какой SQL создает Django. Если вы хотите, можете скопировать и выполнить этот SQL в консоли вашей базы данных. Однако, Django предоставляет более простой способ выполнять SQL в базе данных.

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

  • – Проверяет на ошибки структуру ваших моделей.

  • – Выводит (такие как изменения в таблице или дополнительные правила) определенные для приложения.

  • – Выводит необходимые DROP TABLE запросы для этого приложения, учитывая таблицы, которые уже существуют в базе данных (если такие есть).

  • – Выводит CREATE INDEX запросы для приложения.

  • – Выводит комбинацию SQL запросов команд , , из .

Изучение вывода этих команд может помочь вам понять что на самом деле происходит.

Теперь, выполните команду снова, чтобы создать таблицы для этих моделей в базе данных:

python manage.py syncdb

Команда выполняет все запросы из команды в вашей базе данных для всех приложений, которые находятся . Она создает все таблицы, загружает начальные данные и создает индексы для всех моделей всех приложений. Команда может выполняться любое количество раз и будут созданы только таблицы, которые еще не существуют.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector