Django

Tento článek je o webovém frameworku. O kytaristovi pojednává článek Django Reinhardt.
Django
Logo
VývojářDjango Software Foundation
První vydání21. července 2005
Aktuální verze5.1.3 (5. listopadu 2024)
Vyvíjeno vPython
Typ softwaruwebový framework
LicenceBSD licence
Webwww.djangoproject.com
Některá data mohou pocházet z datové položky.

Django [ˈdʒæŋɡəʊ]IPA je open source webový aplikační framework napsaný v Pythonu, který se volně drží architektury Model-Pohled-Šablona (Model-View-Template). Původně bylo navrženo pro správu několika zpravodajsky orientovaných stránek společnosti The World Company v Lawrenci v Kansasu; později, v červnu 2005, bylo vydáno veřejně pod open-sourceovou licencí BSD. Framework byl pojmenován po jazzovém kytaristovi Django Reinhardtovi.

Je dalším z řady webových frameworků, jako je např. Ruby on Rails; oproti Ruby on Rails však nabízí zajímavou možnost automatické tvorby administrace projektu, která je generována dynamicky podle datového modelu.

Hlavní úkol Djanga je snadné vytvoření komplexních, databází řízených webových aplikací. Zaměřuje se na znovupoužitelnost a propojitelnost komponent, rychlý vývoj, vždy v duchu „DRY“ (anglicky Don't repeat yourself) – neopakovat se.

Komponenty

Jádro frameworku Django obsahuje objektově-relační mapper, který je zprostředkovatelem mezi datovým modelem (definovaným jako třídy Pythonu) a relační databází; systémem zobrazení pro zpracování požadavků a šablonovacím systémem.

Framework navíc nabízí:

  • Odlehčený, samostatný webový server pro vývoj a testování.
  • Serializační a validační systém pro formuláře, který automaticky překládá data mezi formulářem HTML a hodnotami vyhovujícími databázi.
  • Cachovací framework, který nabízí několik různých metod cachování.
  • Podporu tříd, které mohou zasáhnout v různých stádiích vyřizování požadavku a provést vlastní funkce.
  • Vnitřní komunikační systém pro komunikaci mezi komponentami pomocí předem dohodnutých signálů.
  • Možnost překladu všech komponent do libovolného jazyka.
  • Serializační systém, který může produkovat nebo číst reprezentaci XML a/nebo JSON instancí modelu Django.
  • Systém rozšiřujících schopností šablonovacího enginu.

Struktura projektu

Django je framework, který ponechává většinu rozhodnutí na programátorovi aplikace, lze použít jakoukoliv podmnožinu nabízené funkcionality. Vhodnou podmnožinu funkcionality je možné aplikovat i na vývoj desktopových aplikací.

Projekt je chápán jako nejvyšší úroveň v Djangu, je charakterizován konfiguračním souborem settings.py. Dle názvu je patrné, že se jedná o obyčejný modul v Pythonu. Tento konfigurační soubor je společný všem aplikacím v Djangu; je možno jej vytvořit ručně nebo skriptem. Díky možnosti vytvářet struktury projektu a aplikací jednoduchým skriptem není potřeba používat sofistikovanější integrované vývojové prostředí (IDE). Programátor si pohodlně vystačí s obyčejným textovým editorem s podporou zvýrazňování syntaxe. Standardní postup pro vytvoření projektu skriptem po instalaci knihovny Django do lokální instalace Pythonu je:
1. Zkopírování scriptu django-admin.py z lokální instalace Pythonu do adresáře s projekty.
2. Vytvoření projektu z příkazové řádky příkazem: python django-admin.py startproject (název projektu).

V druhém bodě je vytvořen adresář v aktuálním pracovním adresáři s názvem projektu. Adresář bude obsahovat následující soubory:

  • manage.py – Script, který má na starosti správu projektu. Mezi jeho základní úlohy patří:
  1. vytvoření základní struktury nové aplikace,
  2. vytvoření databázového schématu,
  3. spouštění testovacího webového serveru,
  4. spouštění jednotkových testů.
  • settings.py – Konfigurační script společný všem aplikacím v projektu obsahuje zejména:
  1. konfiguraci databázového připojení,
  2. konfiguraci připojení k SMTP serveru pro snadné posílání emailů,
  3. konfiguraci tzv. middleware (rozebráno dále v kapitole Middleware),
  4. nastavení časového pásma a lokále aplikace,
  5. registraci aplikací do projektu.
  • urls.py – Globální konfigurace URL. V tomto souboru jsou URL přesměrována na konkrétní view.
  • __init__.py – Adresář projektu je díky tomuto souboru také balíčkem Pythonu.

Konfigurační soubor se vygeneruje plně okomentovaný, takže i úplnému začátečníkovi v práci s touto knihovnou bude jasný význam jednotlivých konfiguračních klíčů. V tuto chvíli už je dostupný příkaz pro spuštění testovacího serveru, takže lze vyzkoušet python manage.py runserver a po přistoupení na URL http://localhost:8000, už je vidět úvodní stránka. Začít vytvářet aplikaci je možné jen v případě, že již máme založený nějaký projekt. Aplikace v Djangu jsou vždy součástí projektu, jedna aplikace může být součástí i více projektů; je ovšem důležité, aby interpret Pythonu našel zaregistrovaný modul aplikace. Aplikace jsou tedy jednotlivými komponentami v systému, které mohou mít mezi sebou závislosti. Django v těchto případech nezavádí žádnou magii na pozadí, jen podporuje to, co už umí Python standardně. Vytvoření struktury nové aplikace proběhne po spuštění: python manage.py startapp (název aplikace). Po spuštění tohoto scriptu se vytvoří v aktuálním pracovním adresáři adresář název aplikace s následující strukturou:

  • views.py – Obsahuje jednotlivé view funkce.
  • urls.py – Obsahuje mapování URL na jednotlivá view.
  • models.py – Obsahuje popis datového modelu aplikace.
  • tests.py – Obsahuje jednotkové testy.
  • __init__.py – Dělá z aplikace balíček Pythonu.

Každá aplikace musí být zaregistrována v settings.py v položce INSTALLED_APPS. Poté je možné spravovat aplikaci pomocí scriptu manage.py a využívat tak všechny standardní funkce, které Django nabízí. V případě většího zájmu o bližší seznámení s jednotlivými soubory se doporučuje navštívit oficiální dokumentaci.

Zpracování požadavku

Požadavek je v Djangu reprezentován jako instance třídy HttpRequest. V tomto objektu jsou zpřístupněna metadata o HTTP požadavku prostřednictvím jeho atributů a metod. Stručný přehled atributů třídy HttpRequest:

  1. method – Textový řetězec, který reprezentuje HTTP metodu požadavku (GET, POST, OPTIONS atd.).
  2. path – Cesta k požadované stránce.
  3. GET – Atributy poslané v URL.
  4. POST – Atributy poslané v těle požadavku.
  5. REQUEST – Obecný přístup k atributům.
  6. COOKIES – Cookies posílané HTTP požadavkem.
  7. FILES – Soubory k uploadování.
  8. META – Obsahuje všechny dostupné HTTP hlavičky.
  9. user – Objekt autentizovaného uživatele.

Odpověď reprezentuje instance třídy HttpResponse. Tento objekt má možnost vyplnit všechny odpovědní hlavičky HTTP protokolu.

Mezi přijetím požadavku a odesláním odpovědi z konkrétního view projde požadavek přes řetěz tzv. middleware. V této knihovně je však chápání pojmu middleware odlišné od běžného pojetí. Zde jsou třídy middleware chápány obdobně jako filter v Java Servlet API. Naprosto zřejmě se jedná o aplikaci návrhového vzoru Chain of Responsibility. Úlohou tohoto návrhového vzoru je vyhnutí vázání odesílatele a příjemce zprávy za použití řetězu objektů, které mohou odpovědět. Django používá k zachycování požadavků tzv. view funkce. Tato funkce je namapována na konkrétní url. Standardním způsobem je právě definování view jako samostatných funkcí, ale díky flexibilitě jazyka Python lze použít view namapovaná i z existující instance objektu.

Šablonovací systém

Po zpracování požadavku ve funkci je výhodné používat vestavěný šablonovací systém. Šablona je zde obyčejný textový soubor, který díky speciálním značkám umožňuje vypsat text z modelu daného pro vykreslování. Modelem se rozumí instance třídy Context, která se konstruuje ze slovníkového objektu. Tento šablonovací systém je velice flexibilní a umožňuje snadno dopisovat vlastní rozšíření. Další jeho velkou výhodou je umožnění dědičnosti šablon. Tato dědičnost umožňuje v potomkovi předefinovat či rozšířit sekce definované v předkovi. Sekce se definují takto:

  • začátek sekce {% block nazev_sekce %}
  • konec sekce {% endblock %}

Objektově relační mapování

Další velice silnou součástí Djanga je jeho objektově relační mapování. Každý model je potomkem třídy Model z modulu django.db. Jedná se o implementaci návrhového vzoru ActiveObject. Každá třída má automaticky jedno pole a tím je id. Toto pole slouží k identifikaci konkrétního objektu v databázi. Využit je zde dynamický princip Pythonu a za běhu jsou modely rozšířeny o API pro práci s metadaty. Další pole definuje uživatel, je možno využít jak předefinovaných databázových typů polí, nebo lze implementovat i vlastní.

from django import model as m
class Adresa(m.Model):
   ulice = m.CharField(max_length=60)
   mesto = m.CharField(max_length=60)
   psc = m.PositiveIntegerField(blank=True,null=True)

class Osoba(m.Model):
   titul = m.CharField(max_length=10,blank=True,null=True)
   jmeno = m.CharField(max_length=30)
   prijmeni = m.CharField(max_length=30)
   rodne_prijmeni = m.CharField(max_length=30,blank=True,null=True)
   rodne_cislo = m.CharField(max_length=45,blank=True,null=True)
   email = m.EmailField(blank=True, null=True)
   adresa = m.ForeignKey(Adresa)

Práce s těmito objekty probíhá velice intuitivně. V kódu je vidět ukázka jednoduché definice objektů. Tyto objekty lze vybírat z databáze jak s použitím, tak i bez použití SQL.

Server

Framework Django může fungovat na Apache 2 s mod python nebo pod jakýmkoli webovým serverem vyhovujícím WSGI (od verze 3.0 i ASGI). Django je také schopno spouštět server FastCGI v pozadí webového serveru, který podporuje FastCGI.

Framework Django oficiálně podporuje následující databáze:

Adaptéry pro Microsoft SQL Server a Oracle jsou ve vývoji a jsou stále experimentální.

Externí odkazy

Read other articles:

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Vokal bulat hampir tertutup hampir belakang – berita · surat kabar · buku · cendekiawan · JSTOR Vokal bulat hampir tertutup hampir belakangʊNomor IPA321Pengkodean karakterEntitas (desimal)ʊUnik...

 

هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها. معالجة الحمض النووري الرايبوزي (بالإنجليزية: RNA processing or Post-transcriptional modification)‏ هي عملية في حقيقيات النواة تُحـوَّل بها النسخة الأولية من الحمض النووي الرايبوزي إلى الحمض النوو...

 

Scientific study of digital information Not to be confused with Information science. Information theory Entropy Differential entropy Conditional entropy Joint entropy Mutual information Directed information Conditional mutual information Relative entropy Entropy rate Limiting density of discrete points Asymptotic equipartition property Rate–distortion theory Shannon's source coding theorem Channel capacity Noisy-channel coding theorem Shannon–Hartley theorem vte Information theory is the ...

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、...

 

Former Conservative politician, newspaper editor For other people named George Osborne, see George Osborne (disambiguation). The Right HonourableGeorge OsborneCHOfficial portrait, 2015First Secretary of StateIn office8 May 2015 – 13 July 2016Prime MinisterDavid CameronPreceded byWilliam HagueSucceeded byDamian Green[a]Chancellor of the ExchequerIn office11 May 2010 – 13 July 2016Prime MinisterDavid CameronPreceded byAlistair DarlingSucceeded byPhilip Hammond Shad...

 

Флаг гордости бисексуалов Бисексуальность      Сексуальные ориентации Бисексуальность Пансексуальность Полисексуальность Моносексуальность Сексуальные идентичности Би-любопытство Гетерогибкость и гомогибкость Сексуальная текучесть Исследования Шк...

A depiction of Fiji in 1840 Part of a series on the History of Fiji Early history Discovery of Fiji The rise and fall of Cakobau Colonial Fiji Modern history Dominion of Fiji Constitutional crisis of 1977 Coups of 1987 Military–church relations COVID-19 pandemic Coup of 2000 Timeline Mutinies Mara resigned Iloilo plot Trials Court Martial Proposed Reconciliation Commission Supporters Opponents Qualified positions Military opposition Religious reaction International reaction Crisis of 2005...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (نوفمبر 2019) هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها...

 

City in California, United States San Clemente redirects here. For the island off the California coast, see San Clemente Island. For other uses, see San Clemente (disambiguation). City in California, United StatesSan Clemente, CaliforniaCity Top: view of San Clemente Pier; middle: Historic City Hall (left), Casa Romantica (right); bottom: San Clemente State Beach (left) and Hotel San Clemente (right). FlagSealLocation of San Clemente within Orange County, CaliforniaSan ClementeLocation in the...

Lonely BoySingel oleh The Black Keysdari album El CaminoDirilis26 Oktober 2011FormatDownload, 12Direkam2011 di Dan Auerbach's Easy Eye Sound studio di Nashville, TennesseeGenreGarage rock, blues rock[1]Durasi3:13LabelNonesuch RecordsPenciptaDan Auerbach, Patrick Carney, Brian BurtonProduserDanger Mouse, The Black Keys Lonely Boy adalah lagu dari band rock The Black Keys dan menjadi singel pertama dari album El Camino. Daftar lagu Seluruh lagu ditulis oleh Dan Auerbach, Patrick Carney ...

 

Ancient capital of Inebu-hedj, Egypt For the nome, see Inebu-hedj. For other uses, see Memphis (disambiguation). Memphisمنف (Arabic)ⲙⲉⲙϥⲓ (Coptic)Ruins of the pillared hall of Ramesses IIat Mit RahinaMemphisLocation within the Nile DeltaShow map of Nile DeltaMemphisLocation within EgyptShow map of EgyptAlternative name Memphis(Middle Egyptian) Enduring and beautiful (mn nfr)in hieroglyphs Memphis(Old Egyptian) Everlasting places (Djd swt)in hieroglyphs Memphis(Late ...

 

2012 studio album by AdlerBack from the DeadStudio album by AdlerReleasedNovember 26, 2012RecordedJanuary 2012 to April 2012 (January 2012 to April 2012)StudioPilsongs Studio, Santa Clarita, CAGenreRock, hard rock, heavy metalLength40:02LabelNew Ocean MediaProducerJeff Pilson, Adler Back from the Dead[1] is the only studio album by Adler, released on November 26, 2012 on New Ocean Media.[2] The album's release was preceded by the single The One That You Hated, whi...

ДеревняЛедухи 56°54′29″ с. ш. 53°50′30″ в. д.HGЯO Страна  Россия Субъект Федерации Удмуртская Республика Муниципальный округ Воткинский История и география Высота центра 115 м Население Население ↗11[1] человек (2012) Цифровые идентификаторы Почтовый индекс 4274...

 

Not to be confused with Benny Andersen. Swedish musician and composer (born 1946) This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Benny Andersson – news · newspapers · books · scholar · JSTOR (A...

 

British statesman and writer (1874–1965) Churchill redirects here. For other uses, see Churchill (disambiguation) and Winston Churchill (disambiguation). The Right HonourableSir Winston ChurchillKG OM CH TD DL FRS RAThe Roaring Lion, 1941Prime Minister of the United KingdomIn office26 October 1951 – 5 April 1955Monarchs George VI Elizabeth II DeputyAnthony EdenPreceded byClement AttleeSucceeded byAnthony EdenIn office10 May 1940 – 26 July 1945Mo...

Bagian dari seri tentangHierarki Gereja KatolikSanto Petrus Gelar Gerejawi (Jenjang Kehormatan) Paus Kardinal Kardinal Kerabat Kardinal pelindung Kardinal mahkota Kardinal vikaris Moderator kuria Kapelan Sri Paus Utusan Sri Paus Kepala Rumah Tangga Kepausan Nunsio Apostolik Delegatus Apostolik Sindik Apostolik Visitor apostolik Vikaris Apostolik Eksarkus Apostolik Prefek Apostolik Asisten Takhta Kepausan Eparkus Metropolitan Batrik Uskup Uskup agung Uskup emeritus Uskup diosesan Uskup agung u...

 

الدولة اليهودية (بالألمانية: Der Judenstaat)‏    المؤلف تيودور هرتزل  اللغة الألمانية  تاريخ النشر 14 فبراير 1896  النوع الأدبي مقالة  تعديل مصدري - تعديل   دَوْلَةُ اليَهُودِ[1] (بالألمانية: Der Judenstaat) عنوانُ كتاب نشره تِيُودُور هِيرِتْسِل، صاحبُ العقيدة الصهيون...

 

Programming language JOVIALParadigmsProcedural, imperative, structuredFamilyALGOLDesigned bySystem Development CorporationDeveloperSoftware Engineering Associates[1]First appeared1960; 64 years ago (1960)Typing disciplinestatic, strong, safe, structuralScopeLexicalMajor implementationsMVS, OpenVMS, macOS, Windows, Linux, SPARC, PowerPC, MIL-STD-1750A, other legacy systemsDialectsJ3, J3B-2, J73Influenced byALGOL, SAGEInfluencedCMS-2, Coral 66, SYMPL JOVIAL i...

Heraldic achievements' design and transmission The German Hyghalmen Roll was made in the late 15th century and illustrates the German practice of repeating themes from the arms in the crest. (See Roll of arms). Heraldry is a discipline relating to the design, display and study of armorial bearings (known as armory), as well as related disciplines, such as vexillology, together with the study of ceremony, rank and pedigree.[1][2] Armory, the best-known branch of heraldry, conce...

 

Achey L'église Saint-Martin. Administration Pays France Région Bourgogne-Franche-Comté Département Haute-Saône Arrondissement Vesoul Intercommunalité Communauté de communes des Quatre Rivières Maire Mandat Claude Bourrier 2020-2026 Code postal 70180 Code commune 70003 Démographie Gentilé Achayots Populationmunicipale 70 hab. (2021 ) Densité 9,9 hab./km2 Géographie Coordonnées 47° 34′ 29″ nord, 5° 36′ 30″ est Altitude Min. 206...