Удосконалюйте свій проект Django за допомогою цих найкращих практик

Django - це надійна основа з відкритим кодом, заснована на Python, для створення веб-додатків. Його популярність зросла протягом останніх кількох років, і вона вже зріла і широко використовується з великою громадою за нею.

Серед інших фреймворків, створених на основі Python, для створення веб-додатків (таких як Flask і Pyramid), Django є найпопулярнішим. Він підтримує і версію Python 2.7, і Python 3.6. Але на момент цієї статті Python 2.7 - це все-таки більш доступна версія з точки зору спільноти, пакетів сторонніх розробників та онлайн-документації. Django є безпечним при правильному використанні та забезпечує високі розміри гнучкості. Це шлях для розробки додатків на сервері за допомогою Python.

Google Trends 3 найпопулярніших рамок веб-розробки Python

Як досвідчений розробник Python і Django, я поділюся з вами деякими найкращими практиками щодо налаштування Django, які я вивчив і зібрав протягом багатьох років. Незалежно від того, чи є у вас кілька проектів Django під поясом, або ви збираєтеся розпочати свій перший з нуля, найкращі описи, описані тут, можуть допомогти вам створити кращі програми в дорозі.

Я написав цю статтю з дуже практичного мислення, щоб ви могли негайно додати деякі інструменти до свого інструментарію для розробки. Ви навіть можете створити вдосконалений користувальницький котел Django для своїх наступних проектів.

Для цієї статті я припускаю, що ви використовуєте машину Linux Ubuntu. По всій статті деякі рядки коду починаються зі знака $. Вони використовуються для підкреслення того, що цей рядок слід вставити в термінал. Обов’язково скопіюйте рядок без знака $.

Віртуальне середовище

Під час розробки додатків на основі Python, використання сторонніх пакетів є постійною справою. Ці пакети оновлюються часто, тому важливо зберігати їх організовано. Розробляючи все більше та більше проектів на одній локальній машині, складно слідкувати за поточною версією кожного пакета. Використовувати різні версії одного пакету для різних проектів неможливо. Крім того, оновлення пакету для одного проекту може порушити функціональність іншого, і навпаки.

Ось тут корисне віртуальне середовище Python. Для встановлення віртуального середовища використовуйте:

$ apt - отримати оновлення
$ apt-get install python-pip python-dev build-істотний
$ export LC_ALL = "en_US.UTF-8" # може знадобитися, якщо ви отримаєте помилку з наступного рядка
$ pip install - оновлення pip
$ pip install - оновлення virtualenv
$ mkdir ~ / .virtualenvs
$ pip встановити virtualenvwrapper
$ export WORKON_HOME = ~ / .virtualenvs
$ nano ~ / .bashrc

Додайте цей рядок до кінця файлу:

. /usr/local/bin/virtualenvwrapper.sh

Потім виконайте:

$. .bashrc

Після встановлення створіть нове віртуальне середовище для свого проекту, ввівши:

$ mkvirtualenv ім'я проекту

Поки ви перебуваєте в контексті віртуального середовища, ви помітите, що до терміналу додається префікс, наприклад:

(ім'я проекту) ofir @ playground: ~ $

Щоб вимкнути (вийти) з віртуального середовища та повернутися до основного контексту Python вашої локальної машини, використовуйте:

$ деактивувати

Для активації (запуску) контексту віртуального середовища використовуйте:

$ workon ім'я проекту

Щоб переглянути список віртуальних середовищ, наявних у вашій локальній машині, використовуйте:

$ lsvirtualenv

Утримання залежностей проектів (пакетів) у віртуальному середовищі на вашій машині дозволяє тримати їх в ізольованому середовищі. Ви використовуєте їх лише для одного (або декількох) проектів. Створюючи нове віртуальне середовище, ви запускаєте нове середовище, в якому не встановлені пакети. Потім ви можете використовувати, наприклад:

(ім'я проекту) $ pip встановити Django

для встановлення Django у вашому віртуальному середовищі або:

(ім'я проекту) $ pip встановити Django == 1,11

для встановлення версії 1.11 Django, доступної лише зсередини.

Ні ваш основний інтерпретатор Python, ні інші віртуальні середовища на вашій машині не зможуть отримати доступ до нового пакету Django, який ви тільки що встановили.

Для того щоб використовувати команду runserver, використовуючи ваше віртуальне середовище, перебуваючи в контексті віртуального середовища, використовуйте:

(ім'я проекту) $ cd / шлях / до / django / проект
(ім'я проекту) $ ./manage.py runserver

Так само, вводячи інтерпретатор Python з віртуального середовища, введіть:

(ім'я проекту) $ python

Він матиме доступ до пакетів, які ви вже встановили в оточенні.

Вимоги

Вимоги - це список пакетів (залежностей) Python, який ваш проект використовує під час його запуску, включаючи версію для кожного пакету. Ось приклад файлу вимоги.txt:

dicttoxml == 1.7.4
Джанго == 1.11.2
h5py == 2.7.0
matplotlib == 2.0.2
numpy == 1,13,0
Подушка == 4.1.1
psycopg2 == 2.7.1
pyparsing == 2.2.0
python-dateutil == 2.6.0
pytz == 2017.2
шість == 1.10.0
xmltodict == 0,11.0

Оновлення файлу вимог.txt є актуальним для належної співпраці з іншими розробниками. Це також важливо для правильного налаштування виробничого середовища. Цей файл, включений у ваше сховище коду, дає змогу оновлювати всі пакунки, встановлені у вашому віртуальному середовищі, виконавши одну строчку в терміналі. Тоді ви можете за короткий час запустити та запустити нових розробників.

Для того, щоб генерувати нові вимоги.txt або оновити існуючі, використовуйте з вашого віртуального середовища:

(ім'я проекту) $ pip freeze> патрабавання.txt

Для вашої зручності переконайтеся, що виконайте цю команду в папці, яку відслідковує ваше сховище Git. Це дозволяє іншим примірникам коду мати доступ до файлу вимог.txt.

Якщо до команди приєднується новий розробник або ви хочете налаштувати нове середовище за допомогою тих самих пакетів, які вказані у файлі вимоги.txt, виконайте у контексті віртуального середовища:

(ім'я проекту) $ cd / шлях / до / вимог / файл
(ім'я проекту) $ pip install -r вимоги.txt

Всі вимоги, перелічені у файлі, будуть негайно встановлені у вашому віртуальному середовищі. Старіші версії будуть оновлені, і новіші версії будуть зменшені, щоб відповідати точному списку вимог.txt. Будьте обережні, однак можуть виникнути відмінності між середовищами, які ви все ще хочете поважати.

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

Кредит: https://www.djangoproject.com/

Краще налаштування.py налаштування

Django виходить з-під вікна з дуже простим, але корисним файлом settings.py. Це визначає основні та найкорисніші конфігурації для вашого проекту. Файл settings.py дуже простий. Але іноді, як розробник, який працює в команді, або при створенні виробничого середовища потрібно більше одного базового файлу settings.py.

Кілька файлів налаштувань дозволяють легко визначати індивідуальні конфігурації для кожного середовища окремо, наприклад:

ALLOWED_HOSTS # для виробничого середовища
ВІДЛАГОДЖУВАТИ
ДАТАБАСИ # для різних розробників в одній команді

Дозвольте познайомити вас із розширеним підходом до налаштування файлу settings.py. Це дозволяє підтримувати різні версії та використовувати потрібну в будь-який час та в будь-якому середовищі.

Спочатку перейдіть до свого файлу settings.py:

(ім'я проекту) $ cd / шлях / до / налаштування / файл

Потім створіть новий модуль, який називається налаштуваннями (модуль - це папка, що містить файл __init__.py):

(ім'я проекту) $ mkdir

Тепер перейменуйте файл settings.py у base.py і помістіть його всередині нового модуля, який ви створили:

(ім'я проекту) $ mv settings.py settings / base.py

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

Для свого середовища розробки створіть:

(ім'я проекту) $ nano settings / development.py

Потім введіть:

з імпорту .base *
DEBUG = Правда

і збережіть файл, натиснувши Ctrl + O, Enter, а потім Ctrl + X.

Для свого виробничого середовища створіть:

(ім'я_проекту) $ nano settings / production.py

та введіть:

з імпорту .base *
DEBUG = Неправдивий
ALLOWED_HOSTS = ['app.project_name.com',]

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

Вам може бути цікаво - як Джанго знає, який файл налаштувань завантажувати для кожного середовища? Саме для цього використовується файл __init__.py. Наприклад, коли Django шукає settings.py, який використовувався для завантаження під час роботи сервера, тепер він знаходить модуль налаштувань, а не файл settings.py. Але поки це модуль, що містить файл __init__.py, що стосується Django, то це саме те саме. Django завантажить файл __init__.py і виконає все, що в ньому написано.

Тому нам потрібно визначити, який файл налаштувань ми хочемо завантажити у файл __init__.py, виконавши:

(ім'я проекту) $ налаштування / __ init__.py

а потім для виробничого середовища, наприклад, ввівши:

від імпорту виробництва. *

Таким чином, Django буде завантажувати всі параметри base.py та production.py кожного разу, коли він запускається. Магія?

Тепер залишається лише зберегти __init__.py у вашому файлі .gitignore, щоб він не був включений у натискання та потяги. Після створення нового середовища не забудьте створити новий __init__.py файл всередині модуля налаштувань. Потім імпортуйте потрібний файл налаштувань точно так, як ми це робили раніше.

У цій статті ми розкрили три найкращі практики для кращого налаштування вашого проекту Django:

  • Робота у віртуальному середовищі
  • Оновлення файлу вимоги.txt та постійне використання його у робочому процесі
  • Налаштування кращого масиву параметрів проекту

Ви дотримувалися цих найкращих практик у своєму останньому проекті? У вас є якісь ідеї, щоб поділитися? Коментарі високо оцінені.

Чи вважаєте Ви це корисним? Якщо так, будь ласка, дайте мені кілька хлопців, щоб більше людей переглядали статтю.

Це частина 1 у серії про кращі практики розвитку Джанго. Слідкуйте за мною, щоб отримати негайне оновлення, коли з’являться наступні деталі.

Знайдіть більше чудових порад для технологічних підприємців у CodingStartups.