Skip to content

trojsten/django-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 

Repository files navigation

Django Scaffold

Template na rýchlu výrobu Django aplikácií. ⚡

Vytvorenie nového projektu

uvx copier copy https://github.com/trojsten/django-scaffold.git .

A následne si treba vygenerovať lock súbory a nainštalovať dependencies:

uv sync
pnpm install

Obsah

V novovytvorenom projekte sú predpripravené nasledovné veci:

Backend

Frontend

Deployment a development

  • django-types pre lepšiu autocomplete podporu
  • gunicorn ako produkčný WSGI server
  • Docker setup založený na trojsten/django-docker
  • ruff na formátovanie Python kódu
  • djade na formátovanie Django template súborov
  • pre-commit pre automatické spúšťanie formatterov a iných nástrojoch pri commite
  • Github CI workflow na zbehnutie pre-commit hookov v pull requestoch

Trojsten extras

Tiež je možnosť si pri vytváraní projektu zvoliť aj Trojsten súčasti:

Odporúčania

Štruktúra aplikácií

Veľa našich projektov používa štruktúru Django projektu, ktorá je trochu odlišná od tej predvolenej, ktorú Django používa defaultne. Konkrétne, my dávame všetky aplikácie do priečinka projektu, nie vedľa neho. Potom napríklad importy z aplikácií sú project.app.models miesto app.models, ako je zvykom v štandardných Django projektoch. Zvyšuje to trochu prehľadnosť projektu a jeho koreňového adresára.

Avšak, vyrábať takéto aplikácie vyžaduje trochu mágie, lebo startapp to nevie úplne automaticky robiť:

mkdir projekt/app
./manage.py startapp app projekt/app

Potom treba v projekt/app/apps.py treba upraviť:

  • name zmeniť na projekt.app
  • (optionally) zmeniť label na projekt_app, toto je dobrý nápad, lebo občas 3rd party aplikácie majú generické názvy (napr. rules), ale aj Django builtins (admin), ktoré môžu kolidovať s labelmi vlastných aplikácií

Fat Models, Thin Views

Odporúča sa využívať v projektoch prístup Fat Models, Thin Views, ktorý hovorí zjednodušene toto:

  • Thin Views: Views by mali byť čo najmenšie, riešiť primárne logiku spracovania vstupov a výstupov. Akcie by mali delegovať, mali by obsahovať čo najmenej biznisovej logiky. Napríklad: view zavolá user.deactivate() miesto implementácie logiky (user.is_active=False,...).
  • Fat Models: Modely by mali zaobalovať doménovú logiku a integritu dát.
    • Metódy na manipuláciu s dátami modelu (už spomenuté user.deactivate())
    • Metódy na získanie komplexnejších hodnôt (napr. product.in_stock)
    • Pre komplexnú aplikačnú logiku, ktorá potrebuje volať externé služby, pracovať s viacerými modelmi je vhodné vytvoriť jednoduchý service layer (jednoduchá Python funkcia, trieda...)
  • Nebáť sa využiť custom Manager a custom QuerySet.
    • Manager: table-level operácie (operácie na viacerých inštanciách modelu)
    • QuerySet: filtrovanie riadkov, anotácie, zoraďovanie

Doplňujúce čítanie: Against service layers in Django, More on service layers in Django.

Ďalšie užitočné Django projekty

About

Create new Django projects quickly ⚡

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published