Побољшајте свој Дјанго пројекат помоћу ових најбољих пракси

Дјанго је робустан оквир отвореног кода, заснован на Питхону, за изградњу веб апликација. Његова популарност се повећала током последњих неколико година, а већ је зрео и широко се користи са великом заједницом иза себе.

Међу осталим Питхон-овим оквирима за креирање веб апликација (попут Фласк-а и Пирамид-а), Дјанго је далеко најпопуларнији. Подржава и Питхон верзију 2.7 и Питхон 3.6. Али у време овог чланка, Питхон 2.7 је и даље приступачнија верзија у погледу заједнице, независних пакета и мрежне документације. Дјанго је сигуран када се правилно користи и пружа велике димензије флексибилности. То је пут којим треба ићи приликом развијања апликација на серверу помоћу Питхона.

Као искусни програмер за Питхон и Дјанго, поделићу са вама неке најбоље праксе за подешавање Дјанга које сам научио и сакупљао током година. Било да имате неколико Дјанго пројеката под паском или ћете тек започети свој први од нуле, овде најбоље описане праксе могу вам помоћи да створите боље апликације.

Овај чланак сам написао из врло практичног начина размишљања, тако да можете одмах да додате неке алате у свој развојни алат. Можете чак да направите напредни прилагођени Дјанго образац за ваше следеће пројекте.

У сврху овог чланка претпостављам да користите Линук Убунту машину. Кроз чланак, неке линије кода почињу $знаком. Помоћу њих се наглашава да ову линију треба уметнути у терминал. Уверите се да копирате линију без на $знака.

Виртуелно окружење

Док развијамо апликације засноване на Питхон-у, коришћење независних пакета је стална ствар. Ови пакети се често ажурирају, тако да је одржавање неопходно. Када развијате све више и више пројеката на истој локалној машини, изазов је пратити тренутну верзију сваког пакета. Немогуће је користити различите верзије истог пакета за различите пројекте. Штавише, ажурирање пакета на једном пројекту може прекинути функционалност другог, и обрнуто.

Ту Питхон виртуелно окружење добро долази. Да бисте инсталирали виртуелно окружење:

$ apt-get update $ apt-get install python-pip python-dev build-essential $ export LC_ALL="en_US.UTF-8" # might be necessary in case you get an error from the next line $ pip install --upgrade pip $ pip install --upgrade virtualenv $ mkdir ~/.virtualenvs $ pip install virtualenvwrapper $ export WORKON_HOME=~/.virtualenvs $ nano ~/.bashrc

Додајте овај ред на крај датотеке:

. /usr/local/bin/virtualenvwrapper.sh

Затим извршите:

$ . .bashrc

Након инсталације створите ново виртуелно окружење за свој пројекат тако што ћете откуцати:

$ mkvirtualenv project_name

Док сте у контексту свог виртуелног окружења, приметићете да се терминалу додаје префикс, на пример:

(project_name) [email protected]:~$

Да бисте деактивирали (изашли) из виртуелног окружења и вратили се главном Питхон контексту ваше локалне машине, користите:

$ deactivate

Да бисте активирали (покренули) контекст виртуелног окружења, користите:

$ workon project_name

Да бисте пописали виртуелна окружења која постоје на вашем локалном рачунару, користите:

$ lsvirtualenv

Држање зависности пројекта (пакета) у виртуелном окружењу на машини омогућава вам да их држите у изолованом окружењу. Користите их само за један (или више) пројеката. Када креирате ново виртуелно окружење, започињете ново окружење без инсталираних пакета. Тада можете да користите, на пример:

(project_name) $ pip install Django

за инсталирање Дјанго-а у ваше виртуелно окружење, или:

(project_name) $ pip install Django==1.11

за инсталирање верзије 1.11 Дјанго-а доступне само из окружења.

Ни ваш главни Питхон тумач ни остала виртуелна окружења на вашем рачунару неће моћи да приступе новом Дјанго пакету који сте управо инсталирали.

Да бисте користили наредбу рунсервер користећи ваше виртуелно окружење, док у контексту виртуелног окружења користите:

(project_name) $ cd /path/to/django/project (project_name) $ ./manage.py runserver

Слично томе, приликом уласка у Питхон интерпретер из виртуелног окружења, откуцајте:

(project_name) $ python

Имаће приступ пакетима које сте већ инсталирали у окружењу.

Захтеви

Захтеви су листа Питхон пакета (зависности) које ваш пројекат користи док се изводи, укључујући верзију за сваки пакет. Ево примера за requirements.txtдатотеку:

dicttoxml==1.7.4 Django==1.11.2 h5py==2.7.0 matplotlib==2.0.2 numpy==1.13.0 Pillow==4.1.1 psycopg2==2.7.1 pyparsing==2.2.0 python-dateutil==2.6.0 pytz==2017.2 six==1.10.0 xmltodict==0.11.0

Ажурирање requirements.txtдатотеке је неопходно за правилну сарадњу са другим програмерима. Такође је важно за одржавање правилно конфигурисаног радног окружења. Ова датотека, када је укључена у ваше спремиште кода, омогућава вам да ажурирате све пакете инсталиране у вашем виртуелном окружењу извршавањем једне линије у терминалу. Тада можете за кратко време да покренете и покренете нове програмере.

Да бисте генерисали ново requirements.txtили ажурирали постојеће, користите из свог виртуелног окружења:

(project_name) $ pip freeze > requirements.txt

Ради ваше удобности, обавезно извршите ову команду у фасцикли коју прати ваше Гит спремиште. Ово омогућава да и друге инстанце кода имају приступ requirements.txtдатотеци.

Ако се тиму придружи нови програмер или ако желите да конфигуришете ново окружење користећи исте пакете наведене у requirements.txtдатотеци, извршите у контексту виртуелног окружења:

(project_name) $ cd /path/to/requirements/file (project_name) $ pip install -r requirements.txt

Сви захтеви наведени у датотеци одмах ће се инсталирати у ваше виртуелно окружење. Старије верзије ће бити ажуриране, а новије верзије ће бити надограђене како би одговарале тачном списку requirements.txt. Ипак, будите опрезни - можда постоје разлике између окружења која и даље желите да поштујете.

I highly recommend integrating these commands to your work flow. Update the requirements.txt file before pushing code to the repository and install requirements.txt file after pulling code from the repository.

Better settings.py configuration

Django comes out-of-the-box with a very basic yet useful settings.py file. This defines the main and most useful configurations for your project. The settings.py file is very straightforward. But sometimes, as a developer working on a team, or when setting up a production environment, you need more than one basic settings.py file.

Multiple settings files allow you to easily define tailor-made configurations for each environment separately like:

ALLOWED_HOSTS # for production environment DEBUG DATABASES # for different developers on the same team

Let me introduce you to an extended approach for configuring your settings.py file. It allows you to maintain different versions and use the one you want at any given time and in any environment.

First, navigate to your settings.py file path:

(project_name) $ cd /path/to/settings/file

Then create a new module called settings (module is a folder containing an __init__.py file):

(project_name) $ mkdir settings

Now, rename your settings.py file to base.py and place it inside the new module you created:

(project_name) $ mv settings.py settings/base.py

For this example, I assume that you want to configure one settings file for your development environment and one for your production environment. Different developers on the same team can use the exact same approach for defining different settings files.

For your development environment create:

(project_name) $ nano settings/development.py

Then type:

from .base import * DEBUG = True

and save the file by hitting Ctrl + O, Enter and then Ctrl + X.

For your production environment create:

(project_name) $ nano settings/production.py

and type:

from .base import * DEBUG = False ALLOWED_HOSTS = [‘app.project_name.com’, ]

Now, whenever you want to add or update the settings of a specific environment, you can easily do it in its own settings file.

You might be wondering — how does Django know which settings file to load on each environment? That’s what the __init__.py file is used for. When Django looks for the settings.py it used to load when running the server, for example, it now finds a settings module rather than a settings.py file. But as long as it’s a module containing an __init__.py file, as far as Django is concerned, it’s the exact same thing. Django will load the __init__.py file and execute whatever is written in it.

Therefore, we need to define which settings file we want to load inside the __init__.py file by executing:

(project_name) $ settings/__init__.py

and then, for a production environment, for example, by typing:

from .production import *

This way, Django will load all the base.py and production.py settings every time it starts. Magic?

Now, the only configuration left is to keep the __init__.py in your .gitignore file so it will not be included in pushes and pulls. Once you set up a new environment, don’t forget to create a new __init__.py file inside the settings module. Then import the settings file required exactly like we did before.

In this article we’ve covered three best practices for better setting up your Django project:

  • Working inside a virtual environment
  • Keeping the requirements.txt file up to date and using it continuously in your work flow
  • Setting up a better project settings array

Have you followed these best practices in your last project? Do you have any insights to share? Comments are highly appreciated.

Да ли вам се учинило корисним? Ако је тако, молим вас дајте ми пљескање како би више људи видело чланак.

Ово је први део серије о најбољим праксама за развој Дјанго-а. Пратите ме да бисте одмах добили ажурирање када буду доступни следећи делови.

Пронађите још сјајних савета за технолошке предузетнике на ЦодингСтартупс.