Vtomto článku se podíváme na Django. Jedná se o open source webový aplikační framework napsaný v Pythonu, který se volně drží architektury model-view-controller. Django byl navržen tak, aby umožňoval vývojářům co nejrychlejší dokončení aplikace z jejího návrhu. Také je vysoce zaměřen na bezpečnost a pomáhá vývojářům vyhnout se spoustě známých bezpečnostních chyb. V případě tvorby RESTful API aplikací se podíváme na jeho konkrétní specializovaný modul – Django REST framework.

http://www.django-rest-framework.org/

Principy technologie

Ani v tomto frameworku nebude výjimkou použitá model-view-controller architektura. K zprovoznění frameworku je potřeba mít nainstalovaný Python a základní Django framework, jejich zprovoznění je opět snazší v Linuxových prostředích. Můžeme pracovat i ve Windows, bude však nutné instalovat další dodatečný software.

V Djangu můžeme vytvořit více aplikací najednou a následně je sloučit do jedné aplikace. Základní Django projekt můžeme vytvořit jednoduše, příkazem:

django-admin startproject djangorest

Výše zmíněný příkaz nám vytvoří balíček s několika Python soubory. Pro tuto ukázku přeskočíme některé další příkazy pro samotné zprovoznění základů frameworku a podíváme se rovnou na tvorbu modelu. Model bude, jak by se dalo očekávat, Python třída articles/models.py:

class Article(models.Model):
 title = models.TextField()
 content = models.TextField()

Předpokládejme, že připojení na databázi už máme plně vyřešené a funkční. Django nám pak k tomuto modelu může snadno vytvořit migrace, které pak aktualizují tyto modely do databáze:

python manage.py makemigrations articles
python manage.py migrate

V tomto frameworku se však navíc musíme zabývat serializací, což je z pohledu architektury v podstatě vrstva view. Serializer je tedy Python třída starající se o převod z nějakého serializovaného formátu (např JSON) do Python objektů a opačně. Jejich kód pro tuto ukázku není příliš zajímavý. Uvažujme, že máme klasický JSON serializer pro články, tedy ArticleSerializer. S tímto serializerem by se pak pracovalo v controller vrstvě následovně:

"""
List all articles.
"""
if request.method == 'GET':
 articles = Article.objects.all()
 serializer = ArticleSerializer(articles, many=True)
 return JsonResponse(serializer.data, safe=False)

Podmínka (viz výše) by pak umožňovala vrácení všech článků v JSON formátu v případě GET requestu. Vidíme, že je zde opět velice snadný přístup ke všem objektům z databáze, podobně jako tomu bylo u frameworku Rails.

Co je na frameworku trochu zvláštní, je také způsob routování HTTP požadavků, stará se o to speciální Python soubor, v našem případě articles/urls.py, za pomocí url patternů (vzorů):

urlpatterns = [
    url(r'^articles/$', views.article_list),
    url(r'^articles/(?P0-9+)/$', views.article_detail),
]

Celkově se framework nejvíce podobá předchozímu frameworku Rails. Práce s ním mi však přijde trochu složitější, avšak Python může nabídnout o něco vyšší spolehlivost (hlavně z rychlostního hlediska) než Ruby. K užitku také bude spoustu dodatečných balíčků pro jazyk Python.

Hlavní výhody

  • Generování kódu Rychlé a snadné generování projektů, migrací pomáhá k celkovému zrychlení prací na projektu.
  • Přístup ke kolekcím Snadný přístup ke kolekcím do databáze.
  • ZabezpečeníVysoké zaměření na bezpečnost, pomáhá vývojářům vyhnout se spoustě známých bezpečnostních chyb.

Hlavní nevýhody

  • Windows O něco horší podpora pro Windows, nutnost instalace velkého množství dodatečného software.
  • Přehlednost Opět jistá nepřehlednost vygenerovaných projektů.
  • Serializace Nutnost explicitně řešit serializace Python objektů. Dle mého názoru je to trochu zbytečná práce navíc, ve všech předchozích frameworcích nebylo potřeba.

Celkové zhodnocení

1 – nejlepší, 5 – nejhorší

  • Jednoduchost a intuitivnost – 3 Sice obsahuje generování kódu, které by práci mělo značně zjednodušit, avšak například oproti Rails frameworku mi přijde značně složitější, jelikož řešíme další požadavky jako je serializace Python objektů.
  • Dokumentace – 2 Dobrá dokumentace jak samotného Djanga, tak modulu Django REST framework.
  • Spolehlivost – 1 Poskytuje vysoké možnosti zabezpečení, Python je poslední dobou stále populárnější a je považován za velice spolehlivý jazyk.
  • Popularita – 2 Popularita frameworku je značně vysoká, v poslední době již překročila dříve dominantí Rails framework, který je teď na sestupu, avšak popularita Java – Spring roste stále rychleji.

Mezi další populární technologie pro jazyk Python lze řadit:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *