× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

10 užitečných balíčků pro Django

[ http://programujte.com/profil/12995-juda-kaleta/ ]Google [ 109567120005985813805?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       18. 9. 2013       23 982×

Každý z nás staví na odkazu svých předků. I programátoři. Nehrajte si proto na supermany a využijte to, co ostatní nabízí. Článek přináší přehled deseti zajímavých balíčků pro framework Django, které vám mohou ubrat bezesných nocí pomalého vývoje.

Pokud začínáte tento článek číst a nemáte přesnou představu, co to vlastně Django je, doporučuji se nejdříve podívat na český web o tomto frameworku [ http://www.djangoproject.cz/ ], případně na oficiální dokumentaci [ https://www.djangoproject.com/ ]. Pokud jste naopak ostřílení veteráni, nebude pro vás většina z projektů patrně neznámá. Máte-li své odlišné oblíbence, neváhejte se o ně podělit v diskuzi.

Každý z níže uvedených balíčků by měl jít bez problému nainstalovat pomocí nástroje pip.

pip install nazev-balicku

Pro většinu balíčků musíte ještě vykonat kromě instalace pár kroků navíc - patrně to bude přidání do INSTALLED_APPS. O tom, co vše musíte provést, aby aplikace fungovala, se dočtete na oficiálních stránkách projektů.

Autor článku je zároveň autorem některých ze zde uvedených projektů. ​

1. sorl-thumbnail [ http://sorl-thumbnail.readthedocs.org/en/latest/index.html ]

Balíček, který staví na knihovně PIL [ http://www.pythonware.com/products/pil/ ] a nabízí jednoduché API pro vytváření náhledů a různých zmenšenin obrázků. Samozřejmostí je také ořezávání do potřebného formátu.

Ukázka nějčastějšího využití v šablonách:

{% load thumbnail %}

{% thumbnail item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

Více příkladů naleznete v dokumentaci projektu [ http://sorl-thumbnail.readthedocs.org/en/latest/examples.html ].

2. django-less [ https://github.com/andreyfedoseev/django-less ]

Pokud jste příznivci různých preprocesorů pro CSS, jistě oceníte jejich podporu v Djangu. Mým oblíbencem je Less, proto také uvádím tento balíček. Existují samozřejmě i cesty, jak použít jiné nástroje - v tom vám lépe než [ https://www.google.com/search?q=django+compass&oq=django+compass&gs_l=serp.3..0j0i22i30l4j0i22i10i30j0i22i30l4.16059.16746.0.17111.7.7.0.0.0.0.213.1223.0j5j2.7.0....0...1c.1.26.serp..0.7.1219.rD12blAKDj0 ] poradí [ https://www.google.com/search?q=django+stylus&oq=django+stylus&gs_l=serp.3..0j0i22i30l2.104339.105013.0.105212.6.6.0.0.0.0.131.440.5j1.6.0....0...1c.1.26.serp..2.4.208.6Ex2c1ep4C0 ] Google [ https://www.google.com/search?q=django+sass&ie=utf-8&oe=utf-8&aq=t ].

Použití django-less je naprosto jednoduché - použít můžete jak inline styly, tak externí soubor.

{% load less %}

<!-- inline vlozeni stylu -->
<style>
  {% inlineless %}
    #header {
      h1 {
        font-size: 26px;
        font-weight: bold;
      }
      p { font-size: 12px;
        a { text-decoration: none;
          &:hover { border-width: 1px }
        }
      }
    }
  {% endless %}
</style>

<!-- externi soubor -->
<link rel="stylesheet" href="{{ STATIC_URL}}{% less "path/to/styles.less" %}" />

3. django-guardian [ http://django-guardian.readthedocs.org/en/latest/ ]

Ačkoli Django poskytuje základní správu oprávnění [ https://docs.djangoproject.com/en/dev/topics/auth/default/#topic-authorization ] hned v základní instalaci, na mnoho komplexnějších věcí přestává stačit. Pokud budete chtít například per object oprávnění, budete muset sáhnout po nějakém rozšíření. 

A právě jedním z těchto nástrojů je django-guardian. Kromě možnosti přidat jednotlivá oprávnění ke každému objektu vám poskytne vylepšené API, integraci do administrace Djanga a pár užitečných dekorátorů a template tagů. Protože nasazení této aplikace není úplně triviální, místo uvedení příkladů použití vás rovnou odkáži na oficiální dokumentaci [ http://django-guardian.readthedocs.org/en/latest/userguide/index.html ].

4. cstypo [ https://github.com/yetty/cstypo ]

Nástroj, který pomáhá na text aplikovat základní česká typografická pravidla. Krom záměny tří teček na výpustku, převedení uvozovek a použití správných pomlček a spojovníků vám také přidá nedělitelné mezery za jednoznakové předložky, zformátuje data atd. 

Zpracovat dokáže jak obyčejný text, tak HTML dokument:

{% load cstags %}

{{ text|typify }}                # zpracování obyčejného textu (výchozí)
{{ text|typify:'txt' }}          # ...

{{ text|typify:'html' }}         # zpracování html
{{ text|typify:'html'|safe }}    

5. django-embed-video [ http://django-embed-video.readthedocs.org ]

Jak vložit do stránek video z YouTube nebo z Vimeo by z hlavy dokázal říct správně asi málokdo. Triviálním řešením je zkopírovat kód pro sdílení a upravit potřebné atributy. Elegantnějším řešením je použít django-embed-video. To vám kromě základního zobrazení pomocí template tagů nabídne i práci s náhledy.

{% load embed_video_tags %}

{{ 'http://www.youtube.com/watch?v=guXyvo2FfLs'|embed:'large' }}

6. django-extensions [ http://pythonhosted.org/django-extensions/ ]

Základní nabídka příkazů je v Djangu sice pro většinu potřeb dostačující, občas ale budete potřebovat něco extra. A je velká šance, že se vám bude hodit právě tento projekt. Nabízí toho celou řadu, od generování grafů z modelů, přes upravený vývojový server až po vylepšený shell.

python manage.py export_emails > adresses.txt

7. django-floppyforms [ http://django-floppyforms.readthedocs.org/en/latest/ ]

Práce s formuláři bývá v Djangu často kostrbatá. Psaní čistého HTML je zdlouhavé, výchozí generování formulářů je špatně přizpůsobitelné a různé přesouvání z šablon [ http://django-crispy-forms.readthedocs.org/en/latest/ ] do formulářových tříd také není ideální. Rozumným kompromisem se zdá být právě django-floppyforms

Nejužitečnější vlastností je asi vytváření šablon pro jednotlivé prvky formuláře, díky čemuž lze snadno používat různé HTML frameworky, např. Bootstrap. Kromě toho nabízí HTML5 tagy, vlastní form fieldy a widgety pro práci s mapami (ve spolupráci s GeoDjangem [ http://geodjango.org/ ]).

Pro použití je opět nejlepší prostudovat dokumentaci [ http://django-floppyforms.readthedocs.org/en/latest/ ].

8. django-debug-toolbar [ https://github.com/django-debug-toolbar/django-debug-toolbar ]

Django debug toolbar

Odladit aplikaci, aby pracovala správně a rychle, bývá někdy obtížnější než její napsání. Vypořádat se s tímto nepříjemným úkolem vám pomůže django-debug-toolbar, který ve formě postranního panelu poskytne snadný přístup k nejrůznějším interním informacím, nastavení, SQL dotazům a dalším.

Kromě toho je možné rozšířit ho o externí panely [ https://github.com/django-debug-toolbar/django-debug-toolbar/wiki/3rd-Party-Panels ] - informace o Memcache, MongoDB nebo například o validátor HTML.

9. lettuce [ http://lettuce.it/ ]

Kdo ještě nepíše testy, měl by co nejrychleji začít [ https://docs.djangoproject.com/en/dev/topics/testing/ ]. Kromě unittestů lze psát i funkcionální testy, ve kterých simulujete pohyb uživatele po webu a kontrolujete, zda vše funguje, tak jak má. Nejde o nic složitějšího, než obyčejné "proklikání" webu, které ověří, jestli se po úpravě něco nerozsypalo. Jediný rozdíl je v tom, že to provedete automaticky.

Právě toto dělá lettuce. Jedná se o projekt inspirovaný nástrojem Cucumber [ http://cukes.info/ ], známým ze světa Ruby. Propojení s Djangem není obtížné [ http://lettuce.it/recipes/django-lxml.html ] a díky podpoře různých backendů je možné rozběhat tyto testy i na serveru bez grafického prostředí (např. pomocí PhantomJS [ http://phantomjs.org/ ]).

Feature: Working with contributors settings
    Scenario: Change name
        Given I log in as "joe@home.com" with password "joe2013athome"
        And I go to "/my/settings/"
        And I write "Joe" to "first_name"
        And I write "Novak" to "last_name"
        And I click to "#submit-id-save"
        Then there is "#messages .alert.alert-success"
        And I see "Joe" in "#id_first_name"
        And I see "Novak" in "#id_last_name"
        And I write "Joe Allen" to "first_name"
        And I write "Smith" to "last_name"
        And I click to "#submit-id-save"
        Then there is "#messages .alert.alert-success"
        And I see "Joe Allen" in "#id_first_name"
        And I see "Smith" in "#id_last_name"

10. south [ http://south.readthedocs.org/en/latest/ ]

Ač jsem south nechal až na konec, jedná se o velmi důležitý nástroj, bez kterého se obejdete jen stěží. Umožní vám totiž provádět migrace databáze - přidávat a ubírat položky v modelech, měnit jejich názvy apod. Podporuje i migraci dat, různé před a po migrační signály, podporu vlastních polí a další. I zde vás odkáži na pročtení manuálu [ http://south.readthedocs.org/en/latest/ ].


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2013090801-10-uzitecnych-balicku-pro-django/ ].