Как настроить локальную среду разработки для Django

Вопрос новичка в веб-разработке Python здесь. Я пришел из PHP/Laravel, и у вас есть Homestead, который представляет собой предварительно настроенный блок Vagrant для локальной разработки. В так называемом файле Homestead вы настраиваете все, например, веб-сервер, базу данных или версию PHP. Существуют ли аналогичные предварительно настроенные среды разработки для Django?

Я уже гуглил, и, похоже, нет официальных или широко используемых ящиков Vagrant для Django. В официальном руководстве по Django даже рассказывается, как установить и настроить Apache и предпочитаемую базу данных. Каждый раз, когда вы хотите создать новый проект Django, требуется много работы, особенно если эти проекты выполняются в разных производственных средах. Все другие руководства, которые я нашел, просто объясняют, как настроить виртуальную среду с помощью venv или тому подобного. Но этого мне кажется недостаточно. То, что вам, очевидно, нужно, — это среда разработки, максимально приближенная к вашей производственной среде, поэтому вам нужны какие-то виртуальные машины.

Я немного смущен прямо сейчас. Вы просто берете простую Ubuntu (или любую другую ОС) Vagrant и устанавливаете все самостоятельно? Вы вообще не используете Vagrant, а что-то другое? Я что-то пропустил, и рабочий процесс веб-разработки Python совершенно другой?


person simon    schedule 10.07.2020    source источник


Ответы (2)


Типичная локальная разработка в Django использует только встроенный веб-сервер и базу данных SQLite. Шаги, чтобы запустить это:

  1. Убедитесь, что у вас установлена ​​нужная версия Python.
  2. Создайте виртуальную среду, чтобы изолировать библиотеки, необходимые для вашего проекта, от остальной системы (это необязательно, настоятельно рекомендуется, я бы рекомендовал использовать Поэзия).
  3. Установите Django, возможно, через pip.
  4. Запустите manage.py runserver (и перенесите базу данных и настройте суперпользователя, бла-бла-бла ).

Этого вполне достаточно для местного развития. Вам нужно знать, что существуют некоторые различия между SQLite и Postgres, MySQL и т. д. ., и если вы найдете места, где разница важна, вы также захотите настроить свою целевую базу данных для разработки непосредственно против нее. Это, вероятно, может произойти в контейнере Docker, если это имеет смысл для вас. Но нет особых причин помещать Django в контейнер во время разработки, если только ваш проект не является особенно сложным и требует моделирования определенных условий, которые встроенный сервер почему-то не может.

person deceze♦    schedule 10.07.2020
comment
Не тот ответ, на который я надеялся, но я думаю, что тогда просто нет заранее приготовленной среды. Но действительно ли это так хорошо работает с Django ORM? Мой опыт работы с PHP ORM заключается в том, что если вы разрабатываете с другой базой данных, чем вы используете в производстве, вы столкнетесь с проблемами раньше, чем позже. - person simon; 10.07.2020
comment
ORM Django чертовски надежен. Опять же, различия хорошо задокументированы, и вам следует ознакомиться с этой документацией, чтобы знать, когда вы используете функции, отличающиеся в разных базах данных. Если вы придерживаетесь абстрактного API QuerySet, вы редко будете сталкиваться с различиями. Если вы переходите к чистому SQL, очевидно, что все ставки отключены. Для большинства приложений CRUD, которые не используют все малоизвестные нестандартные функции конкретной базы данных, вы, вероятно, не столкнетесь с какими-либо проблемами. - person deceze♦; 10.07.2020
comment
Да, конечно. Я попробую встроенный веб-сервер и посмотрю, как далеко я продвинусь. - person simon; 10.07.2020

Это помогает?

$ python3 -m venv my_env # create your virtual environment
$ source my_env/bin/activate # Any package you install will be inside this environment
$ pip install -r requirements.txt # can also install packages indivdually
$ deactivate # get out of the isolated environment

Вот документ.

person Balaji Ambresh    schedule 10.07.2020
comment
Я знаю, как настроить виртуальные среды внутри Python, мой вопрос был больше о том, как настроить всю среду разработки, включая ОС, веб-сервер, базу данных и так далее. - person simon; 10.07.2020