Domyślna struktura generowana przez metodę django.forms.Form.as_table pozostawia nieco do życzenia. Stąd nieco wygodniejsza i nieinwazyjna wersja w postaci filtra (zastanawiam się, czemu ta wbudowana w Django ma postać metody):
from django.template.loader import render_to_string @register.filter def as_table(form): return render_to_string('form_as_table.html', {'form': form})
Do kompletu przykładowy szablon:
{% for f in form %} {% if f.errors %} <tr class="{{ f.name }} errors"> <td colspan="2"> <div class="error">{{ f.errors }}</div> </td> </tr> {% endif %} <tr class="{{ f.name }} {% if f.errors %}errors{% endif %}"> <th>{{ f.label_tag }}:</th> <td> {% if f.help_text %} <span>{{ f.help_text }}</span> {% endif %} {{ f }} </td> </tr> {% endfor %}


Standardowo as_table jest metodą dlatego, że wszystkie sposoby na proste wyświetlanie forma są jego metodami. To natomiast jest wymagane, by {{ form }} wyświetlało zawartość forma — gdzieś w definicji jest zaszyte, że form.__str__ to wywołanie as_table.
tak widze ze sie znowu zacząłęś o django rozpisywać więc mam dla Ciebie quiz:
def jakisview(request):
[blah blah…]
s = {
‘foo’ : ‘barbar’,
‘foo2’ : ‘bee’
‘RefNo.’ : 9320,
}
return render_to_response(„t.html”, s)
Pytanie brzmi — jak w samym templacie dostac sie do wartosci 9320 ?
Inaczej mówiąc jak zmusić django do potraktowania kropki za RefNo jako nazwy klucza zamiast akcji?