Komentáře k článku

Django: Zpracovávání formulářů

Pomocí formulářů uživatelé zadávají data do aplikace. Manuální zpracovávání formulářů ale bývá pro programátory hodně otravné. Django naštěstí umožňuje formuláře generovat a zpracovávat, což programátorům usnadňuje život. V článku se na zpracování formulářů v Djangu podíváme podrobněji.

Zpět na článek

5 komentářů k článku Django: Zpracovávání formulářů:

  1. Honza Kral

    unicode a prace se stringy

    Prosim vyhnete se pouzivanim bytestringu (str()) v djangu, zejmena v kombinaci s unicode stringy. Vede to k osklivym errorum ktere jsou tezko odhalitelne protoze se vyskytuji jen nekdy, vsude pouzivejte unicode.

    Rovnez opetovne scitani stringu (byte i unicode) je vhodne se vyhnout, je to neumerne draha operace:

    out = [message]
    for item in ['name', 'email', 'phone', 'reaction', 'text']:
      if unicode(form.cleaned_data[item]):
        out.extend([form[item].label, u': ', unicode(form.cleaned_data[item]), u'n'])
    message = ''.join(out)

    Nehlede na to, ze pokud mym zamerem je jen odeslat data v emailu, neni vhodne pozadovat po Djangu aby vstupy z formulare prevadelo na datove typy pythonu (Boolean) jen proto abych je pak prevedl zpet, ChoiceField by v tomto pripade vyhovoval mnohem vic a usetril by dost kodu (vsechny prevody na unicode v zobrazenem view).

    1. Pavel DvořákAutor příspěvku

      Re: unicode a prace se stringy

      Máte naprostou pravdu, všude by měla být použita metoda unicode, ne str. Omlouvám se za to, nestihl jsem kód dostatečně otestovat. (Hlavně že tam o tom píšu, že je na tom místě potřeba použít unicode řetězce…)

  2. Tomaasch

    Obecnejsi kod

    Kod smycky pro vypis fieldu jde pouzit o neco obecneji, misto

        for item in ['name', 'email', 'phone', 'reaction', 'text']:

    je IMHO lepsi pouzit ponekud obecnejsi

        for item in form.fields.keyOrder:

    Pak muzeme vesele pridavat dalsi fieldy pouze do modelu a view pritom zustane netknute…

  3. Pavel DvořákAutor příspěvku

    Oprava kódu sestavujícího e-mailovou zprávu

    Opravil jsem příklad podle komentářů Honzy Krále a Tomaashe. Nezahrnul jsem sice všechny připomínky (názornost je podle mě důležitější než efektivita), ale kód by teď měl být bez defektů. Ještě jednou díky oběma pozorným čtenářům.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3091