store html šablon v docstrings?

hlasů
1

Já používám baňky psát webové služby pro interní aplikace tady v mé práci. Mnoho z webu služby URI návratu HTML partials, a snažím se přijít na to, čistý způsob, jak ukládat html šablony řetězce. Nechci dát šablony řetězců v samostatných souborech, protože oni jsou obvykle jen pár řádků dlouhá a já nechci mít 20 soubory šablony, které každý z nich má 3 řádky v nich. Přemýšlel jsem o definování funkce v html šablony řetězec dokumentačního řetězce funkce, protože mám pocit, že by sloužit více účelům. To bude sloužit jako dokumentace, v podstatě říká: „To je to, co jsem výstup“, stejně jako mě drží od nutnosti ukládat 3řádkový šablony řetězců v samostatných souborech. Zde je to, co mluvím:

@app.route('/path/to/my/resource/<int:_id>')
def some_resource(_id):
    
    <select id=resource-` resource`.`id ` class=resource>
        {% for choice in choices %}
        <option id=choice-` choice`.`id ` value=` choice`.`id `>
            ` choice`.`text `
        </option>
        {% endfor %}
    </select>
    

    # retrieving resource, etc...

    return render_template_string(some_resource.__doc__, **kwargs)

Nevím, jestli by to být noční můra pro udržení nebo ne ... nějaké myšlenky?

Položena 11/03/2011 v 23:04
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
4

Myslím, že je to špatný plán.

Docstrings jsou dokumentace, šablona není dokumentace. Dokumentace má popsat, co tato funkce se používá pro. Šablona HTML je špatnou náhražkou za to.

Můžete použít multi-řádku řetězce držet šablonu, a to je asi dobrý nápad. Nezískáte něco tím, že jim docstrings.

Odpovězeno 11/03/2011 v 23:11
zdroj uživatelem

hlasů
0

Je to určitě zajímavý nápad, a po vzoru doctest, že to není zcela neslýchané, aby funkčně užitečné věci ve svých docstrings namísto pouhého textu. Zřejmé Nevýhodou je, že pak je tu žádná dokumentace v dokumentačního řetězce. Teď to může nebo nemusí být velký problém v případě, že metody nejsou něco, co programátoři budou pravděpodobně potřebovat dokumentaci týkající se přes help()(nebo automaticky generovaných dokumentů s využitím docstrings).

Nicméně, proč také ne:

  1. stačí použít místní řetězec proměnné - Nevýhodou by bylo, že se nemůžete dostat se na něj přes __doc__zvenčí rozsahu funkcí
  2. když je to jen používal to jednou, stačí dát ji do render_template_stringhovoru - stejnými nevýhodami jako # 1, ale také neplatí, pokud je použit více než jednou
  3. vytvořit jiný malíř, který bere tento řetězec jako argument - zejména pokud to jen následuje vzor nahoře, kam ho jen pomocí jednou a pořád dělají totéž volání na konci, to by vám umožní ji vytáhnout že metoda
Odpovězeno 11/03/2011 v 23:12
zdroj uživatelem

hlasů
0

V některých šablon motorů, pokud má objekt __html__ metodu, je to výstup je považován za bezpečný (unikla) řetězec.

def fn(x):
    bla = x
fn.__html__ = lambda : '''
    <h1>Headline</h1>
    <p>lorem ipsum</p>
    '''
Odpovězeno 11/03/2011 v 23:35
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more