10 Alap hibákat django-fejlesztők

10 Alap hibákat django-fejlesztők

Django - szabad hálózati nyílt forráskódú Python-keretet, hogy segítsen megoldani a közös problémák kialakulásában. Ez lehetővé teszi, hogy rugalmas, jól felépített alkalmazásokhoz. A Django már a dobozból kivéve egy csomó modern funkciókat. Például, hogy van olyan funkciók, mint Admin, objektum relációs leképezés szerszám (ORM), Routing Sablonozás, Django teszi az első jelölt a kiválasztási eszközök fejlesztése. Létre egy alkalmazást igényel sok energiát, és élvezi a munkát, valamint bármely fejlesztő akarom tölteni a kevés időt rutin feladatokat. Django sokkal ez segít, nem kényszeríti az alkalmazás, hogy feláldozza a rugalmasság.

A gyilkos-funkció Django - admin erőteljes konfigurálható felület, amely automatikusan (automágikusan?) Alapján generálva a séma a modell és az admin modellek. Érezd egyenesen varázsló. Az interfész Admin felhasználó beállíthatja sok mindent, köztük - az ACL (Access Control List, ACL) kezelése, rendezése és cselekvés sor-szintű (sor-szinten), szűrők, rendezési sorrend (megrendelések), kütyü, formák, kiegészítő URL-segítők és így tovább. Úgy vélem, hogy az admin felületen van szükség az egyes alkalmazásokhoz. Ez csak idő kérdése, mielőtt egy ilyen panel szüksége lesz a fő alkalmazás. A Django ez könnyen és gyorsan megvalósítható.

Django is egy erős ORM, ki a dobozból működik az összes jelentős adatbázisokat. Ő „lusta”: ellentétben más ORM utal az adatbázis csak szükség esetén. Ezt támogatja a nagyobb SQL-utasítások (és funkciók), amelyek segítségével az eredeti Python-kódot és az egyéb jellemzőit a nyelvet.
A Django, egy nagyon erős és rugalmas sablon (sablonrendszer). Hozzáférés számos standard szűrők és címkék (tagek), akkor is létrehozhat. Django támogatja a többi motor, mint a saját sablonokat, egy API könnyen integrálható egyéb motorok szokásos helyi funkciók feldolgozásra sablonokat.

A keret még sok más fontos funkciók, mint például URL-router, amely értelmezi a beérkező kéréseket, és létrehoz egy új URL-alapú forgalomirányítást rendszereket. Összességében Django pleasant dolgozni, és ha segítségre van szüksége, csak olvasd el a dokumentációt.

Hiba száma 1. A projekt függőségek globális környezet Python

Ne használja a globális Python környezet függőségek a projekt, mert ez vezethet a függőség konfliktusokat. Python nem tudja, hogyan kell dolgozni a több verziója csomag ugyanabban az időben. Ez akkor jelent problémát, ha a különböző projektek szükség van a különböző, nem kompatibilis változata ugyanazt a csomagot.

Ez a hiba általában lehetővé teszik újoncok Python- és Django-fejlesztés, nem ismerve a Python környezet szigetelés jellemzői.

Nagyon sok módja van, hogy elszigetelje a környezet, a leggyakoribbak:

  • virtualenv. Python csomagot generál egy mappát a környezetet. Tartalmazza a forgatókönyvet (de) aktiválja a környezetvédelmi és gazdálkodási telepített csomagok benne. Ez a kedvenc és a legegyszerűbb módszer. Általában olyan környezetet teremtenek, közelebb a projekt mappába.
  • virtualenvwrapper. Python csomag globális keretében létrehozott eszközök létrehozása / törlése / aktiválás, és így tovább. D. virtuális környezetek és hozzáférést biztosít ehhez a készülékhez. Minden környezetben tárolja ugyanabban a mappában (ez átírható változó WORKON_HOME). Nem látok semmilyen előnnyel jár, ha virtualenvwrapper helyett virtualenv.
  • A virtuális gépek. Nincs jobb szigetelés mint egy teljes virtuális gép osztják az alkalmazás. Sok eszköz áll rendelkezésre, mint a VirtualBox (ingyenes), VMware. Párhuzamok és Proxmox (a kedvencem, van egy ingyenes változat). Együtt a virtuális gép automatizálási eszköz, mint a csavargó ez lehet egy nagyon hatékony megoldás.
  • Konténerek. Az elmúlt években már szinte minden projekt használ Docker. különösen az új projektek, nulláról indul. Docker - hihetetlen eszköz sok lehetőséget. Annak automatizálás elérhető egy csomó külső eszközök. A Docker egy gyorsítótár-szint (layer caching), amely lehetővé teszi az ultra gyors újra létrehozni a tartályban. A nekik egy globális Python környezetben, mivel minden egyes tartály saját fájlrendszert, és elszigetelt projektek magas szinten. Docker lehetővé teszi az új csapat tagjai megkezdik a projekt, különösen, ha van tapasztalata ezzel a technológiával.

Hiba száma 2 kötődés hiánya függőségek requirements.txt fájl

Minden új Python projekt kell kezdeni requirements.txt fájlt, és egy új, önálló környezetben. Általában keresztül pip / easy_install telepítése az összes csomagot, nem megfeledkezve requirements.txt. Általában könnyebb (esetleg. Helyes) telepíteni projektek szerverek vagy gép csapat tagjai.

Fontos az is, hogy requirements.txt fájlt snap (pin) sajátos változatának a függőségek. Jellemzően különböző változatai a csomag is különböző modulok, funkciók és funkció paramétereit. Még a korábbi verziók függőségi változás lehet úgy, hogy megtöri a csomagot. Ez egy nagyon komoly probléma, ha van egy élő projekt, és azt tervezi, hogy telepíteni tudja rendszeresen, mert anélkül, hogy egy verziókövető rendszer a build rendszer mindig telepíti a legfrissebb verziója a csomag.

A termelési mindig végezze csomag kötődnek! Én ezt egy nagyon jó eszköz pip-eszközöket. Ez egy sor parancs, hogy segítsen kezelni a függőségeket. Az eszköz automatikusan létrehozza requirements.txt. amelyek kapcsolódnak nemcsak a függőség, de általában az egész fa, t. e., és attól függően, hogy a kapcsolatok.

Ahhoz, hogy még több óvatos, akkor lehet, hogy egy biztonsági másolatot az eredeti fájlokat a szenvedélybetegségek. Tartson egy másolatot a fájlrendszerben, Git-mappa, S3-mappa, FTP, SFTP - bárhol, csak a kezét. Vannak olyan helyzetek, amikor egy kivételt a listából viszonylag kis csomag tör nagyszámú csomagokat a NPM. Pip lehetővé teszi, hogy töltse le a szükséges függőségeket formájában forrás fájlokat. További részletek a futás a parancs pip segítséget letölthető.

Hiba száma 3. A Python vágású funkciók helyett reprezentációk osztály (Class alapú nézetek)

Néha célszerű használni az alkalmazás fájl views.py kis Python-funkció, különösen a vizsgálati és haszonelvű nézeteit. De általában alkalmazásokat kell használni a bemutató osztály-alapú (CBV).

Oszlopágytérfogat - A prezentáció általános célú, absztrakt osztályok, amelyek megvalósítása közös webes fejlesztési feladatokat. Oszlopágytérfogat létre szakemberek és a fedél legkeresettebb modell a viselkedés. Van egy jól strukturált API és oszlopágytérfogat megadja a lehetőséget, hogy élvezze minden előnyét OOP. A kód tisztább és könnyebben olvasható. Felejtsd el a nehézségeket a szabványos reprezentációja funkciók (részletek funkciók) Django, hogy felsorolja, szifilisz-műveletek képez feldolgozás, és így tovább. D. Egyszerűen bontsa ki a megfelelő oszlopágytérfogat a bemutatót, és újra (felül) függvény vagy osztály tulajdonságait, konfigurálása bemutatása viselkedés (általában függvény egy tulajdon, és felveheti rá semmilyen logika, amely viszont a kódot spagetti, ha ahelyett, oszlopágytérfogat majd bekapcsolja a funkciók képviselet).

Létrehoztam Django sablon nevek csomagot. amely egységesíti a neveket a sablonokat a beadványok alapján az alkalmazás nevét és az a véleménye, osztályban. Azt használja minden nap, és én menteni egy csomó időt, amikor kiválasztják neveket. Csak helyezze be a nyálkahal oszlopágytérfogat - class Részletes (TemplateNames, DetailView): - és ez elkezd dolgozni! Természetesen, akkor felülírhatja én funkciót, és adjunk hozzá egy mobil adaptív sablonok, egyéb sablonok felhasználó-agent'ov vagy bármi más.

Hiba száma 4. Írás „vastag» (zsír) és ábrázolásai „vékony» (sovány) modellek

Ha költözött az alkalmazás logikát véli, modell, ez azt jelenti, hogy a leadási tartozó kódot a modell. Azaz bemutató lesz a „vastag”, és a modell - „vékony”.

Szükség van, hogy írjon egy „vastag” modell és a „vékony” bemutatását.

Break a logika kis módszer a modellben. Ez lehetővé teszi a használatát a tartás és a több forrásból származó (az admin felhasználói felület, a felhasználói felület frontend, API végpontja több ábrázolások). Ez mindössze néhány sornyi kódot, és akkor nem kell copy-paste egy csomó sor. A következő alkalommal írsz alkalmassága e-mailt küldeni a felhasználó, bontsa ki a modell segítségével e-mail funkció, és nem írja a logika a vezérlő.

Hiba száma 5. Hatalmas, esetlen konfigurációs fájl

Még az új konfigurációs fájl Django-projekt tartalmaz sok ilyen beállítást. És valós projektekben fájl növekszik 700 + vonalak, amelyek nehéz fenntartani, különösen, ha a fejlesztői környezet, Productions és steydzhinga szükség van a különböző konfigurációkat.

Itt látható egy példa a minimális konfiguráció:

Hiba № 6. melléklet all-in-one szerkezete és helytelen alkalmazása helytelen források

Bármilyen Django-projekt keretében több alkalmazás. A terminológia a Django app - egy Python-projekt, amely legalább __init__.py és models.py fájlokat. A legújabb változat a Django models.py már nincs szükség, csak __init__.py.

Django-app tartalmazhat Python-modulok specifikus Django modulok (nézetek, URL-ek, modell, az admin felületen, formák, minták, címkék, és így tovább. D.), a statikus fájlokat, sablonok, adatbázis migráció, menedzsment, unit tesztek és így tovább. Meg kell szakítani a monolit alkalmazása kisebb újrahasználható az egyszerű logika a kérelmet.

Javasoljuk, hogy hívja fel a projekt a projekt mappába, és tegye a kérelmet a projekt / apps /. Azután, hogy a függőségek alkalmazások saját almappákat.

  • Statikus fájlok: projekt / apps / appname / statikus / appname /
  • sablon Címkék: projekt / apps / appname / templatetags / appname.py
  • Sablon Files: projekt / apps / appname / templates / appname /

Mindig hozzá az alkalmazás nevét, mint egy előtag a nevét almappákat, mert az összes statikus mappák egyesülnek. Ha két vagy több alkalmazás van js / core.js fájlt. az utolsó alkalmazás settings.INSTALLED_APPLICATIONS felülír minden korábbiak. Egy nap belefutottam ezt a hibát a projekt, és töltött mintegy hat órán át hibakeresés, amíg rájött, hogy egy másik fejlesztő újrafogalmazta én statikus / admin / js / core.js. mert a csapat tagjai már végre egy egyedi admin SPA-központ, és adja meg a fájl azonos nevű.

Íme egy példa a szerkezet a portál alkalmazás, amely sok erőforrást, és Python-modulokat.

Természetesen a konkrét projekt nehéz lesz, de ez a szerkezet teszi könnyebbé és átláthatóbbá sok szempontból.

Hiba № 7. STATICFILES_DIRS STATIC_ROOT és megzavarja ezeket az új Django-fejlesztés

A tervezési mód - python manage.py runserver - Django néz statikus fájlokat STATICFILES_FINDERS beállításokat. Alapértelmezésben ez megpróbálja megtalálni a keresett fájl a mappában szereplő STATICFILES_DIRS. Ha nincs találat, az megkeresi a django.contrib.staticfiles.finders.AppDirectoriesFinder. amely ellenőrzi az egyes statikus mappát a kérelemben meghatározott projekt. Ez a rendszer lehetővé teszi, hogy írjon, amennyiben saját statikus fájlok újrahasznosítható alkalmazásokat.

A termelés akkor vetés statikus adatokat egy külön web szerver, mint a nginx. Ő nem tud semmit a szerkezet a projekt Django alkalmazást sem, hogy a statikus fájlok vannak elosztva az egyes mappák. Szerencsére Django biztosítja számunkra a csapat kezeli a gyűjtemény statikus adatokat (gyűjtése statikus menedzsment parancs) - python manage.py collectstatic. amely kiterjeszti STATICFILES_FINDERS és másolatok a statikus fájlokat a mappában statikus alkalmazások, valamint a mappák felsorolt ​​STATICFILES_DIRS. Egy adott neked STATIC_ROOT könyvtárban. Ez lehetővé teszi, hogy (felbontás) források formájában statikus adatokat ugyanaz a logika, mint a Django szerver fejlesztési mód, és összegyűjteni egy helyen az összes statikus fájlokat a web szerver.

Ne felejtsük el, hogy collectstatic a termelési környezetben!

Hiba száma 8. A termelés STATICFILES_STORAGE alapértelmezett, és indítsa Django-sablon

Ezt fel lehet használni, mint ManifestStaticFilesStorage STATICFILES_STORAGE (vigyázat Hashing benne csak DEBUG = false mód), és végre collectstatic. Ez vezet számának csökkenése az erőforrás kéri a gyártási helyszínen, és ez sokkal gyorsabb renderelés.

Cool funkció Django - a tárolt sablon rakodó. Ő nem indul újra, és értelmezi a sablon fájlt minden alkalommal készült. Elemzési sablon - igen költséges művelet, ez megköveteli a sok számítási erőforrások. Alapértelmezésben Django-sablonok elemzett minden kérést, és ez rossz, különösen a termelés, ahol rövid idő alatt lehet feldolgozni ezer kéri.

A konfigurációs cached.Loader talál egy jó példa, és a részleteket a problémát. Ne használja a betöltő fejlesztési mód, mert nem indul újra otparsennye sablonokat a fájlrendszerben. Meg kell majd indítani a projekt segítségével python manage.py startapp. Minden változás mintát. A fejlődés ezen bosszantó lehet, de ez ideális termelési környezetben.

Hiba száma 9. Tiszta Python a közművek vagy szkriptek

A Django van egy nagyszerű funkció - vezetőség. Használd őket, ahelyett, újra feltalálja a kereket a írásmódú tiszta Python szkripteket a projekt eszközöket.

Szintén figyelni, hogy a csomag Django Extensions. amely a gyűjtemény egyedi kiterjesztések Django. Lehet, hogy valaki már végrehajtotta a csapat! Sok közös cél parancsokat.

Hiba száma 10. Velosipedostroenie

A Django Python és a több ezer kész megoldást. Kérjük, olvassa el a keresők, mielőtt írsz valamit, nem egyedi. Valószínűleg már a megfelelő megoldást.

Nem kell bonyolítani a dolgokat. Először - Google! Telepítse talált minőségi csomag, konfigurálja, bővíteni és integrálni a projekt. És ha lehet, hozzájárulhat a nyílt forráskódú.

Itt kell kezdeni a listát a saját csomagok Django:

  • Django makrók URL. makrók segítségével egyszerűsíti írásban (olvasás) URL-minták Django-alkalmazásokat.
  • Django sablonok nevei. kis nyálkahal, megkönnyíti, hogy egységesítsék a nevét a CBV-sablonokat.
  • Django Osztott beállítások. Ez lehetővé teszi, hogy terjeszteni Django-settings több fájlokat és könyvtárakat. Könnyen felülbírálhatja és módosíthatja a beállításokat. Ez használ egy helyettesítő (joker) a fájlútvonalakat és megjelöli a beállításokat választható fájlokat.

Ne ismételje magát (száraz)!

Én vagyok híve a DRY-koncepció, ezért létrehozott Django csontváz - egy praktikus eszköz számos szép képességgel már a dobozból kivéve:

  • Docker-képeket a fejlesztési / hajtott dokkoló-kompozíciót, így könnyen levezényelni egy listát a konténerek.
  • Egyszerű Fabric-script telepítéshez a termelés.
  • Beállítása a Django Osztott beállítások csomag az alap beállításokat és helyi forrásokból.
  • Webpack integrálni a projekt - a parancs collectstatic Django gyűjt csak a mappát ker.
  • Állítsa az alapbeállításokat és Django-funkciókat cache termelés Django-sablonok kivonatolt statikus fájlok, integrált eszköztár hibakeresés, a fakitermelés, és így tovább. D.

Ez kész Django-csontváz a következő projekt, létre a semmiből. Remélhetőleg akkor menteni egy csomó időt. Webpack van egy minimális alap konfiguráció, hanem felhasználásával létrehozott SASS beállítva, hogy feldolgozza .scss fájlokat.

Kapcsolódó cikkek