Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
wiki2:python:django:templates [2018/10/19 09:48] alfred [Render a template] |
wiki2:python:django:templates [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 21: | Línea 21: | ||
| Puedes añadir una template al directorio ''templates'' de la APP. Entonces símplemente has de hacer ''loader.get_template('the_concrete.html')''. | Puedes añadir una template al directorio ''templates'' de la APP. Entonces símplemente has de hacer ''loader.get_template('the_concrete.html')''. | ||
| + | ==== Call the super block ==== | ||
| + | <code> | ||
| + | {% block submit_buttons_bottom %} | ||
| + | {{ block.super }} | ||
| + | ... | ||
| + | </code> | ||
| + | ===== Advanced ===== | ||
| + | |||
| + | ==== Varios formularios ==== | ||
| + | Necesitarás generar el id para cada uno de ellos. Para eso usaremos la propiedad ''auto_id'': | ||
| + | <code> | ||
| + | def get_context_data(self, **kwargs): | ||
| + | return super().get_context_data( | ||
| + | password_change_form=PasswordChangeForm(self.request.user), | ||
| + | user_data_form=UserDataForm(instance=self.request.user), | ||
| + | pledge_forms=[ | ||
| + | SignPledgeForm(instance=pledge, auto_id=f'{idx}_%s') | ||
| + | for idx, pledge in enumerate(self.request.user.pledges.all()) | ||
| + | ] | ||
| + | ) | ||
| + | </code> | ||
| + | |||
| + | Con este ejemplo cogerán el patrón indicado. | ||
| ===== Tips ===== | ===== Tips ===== | ||
| + | |||
| + | ==== Index of the loop ==== | ||
| + | <code> | ||
| + | {% for pledge_form in pledge_forms %} | ||
| + | <form method="post" class="generated-form" id="form-{{forloop.counter}}"> | ||
| + | ... | ||
| + | </code> | ||
| ==== Numeric loop ==== | ==== Numeric loop ==== | ||
| <code> | <code> | ||
| Línea 43: | Línea 73: | ||
| <code> | <code> | ||
| {% include 'worklist.html' with var_a='abc' var_b=123 %} | {% include 'worklist.html' with var_a='abc' var_b=123 %} | ||
| + | </code> | ||
| + | |||
| + | ==== Debugging templates ==== | ||
| + | If DEBUG is enabled, there's a template tag called {% debug %} | ||
| + | |||
| + | There are some snippets to add: | ||
| + | <code> | ||
| + | <pre> {% filter force_escape %} {% debug %} {% endfilter %} </pre> | ||
| + | </code> | ||
| + | |||
| + | <code> | ||
| + | <textarea onclick="this.focus();this.select()" style="width: 100%;"> {% filter force_escape %} {% debug %} {% endfilter %}</textarea> | ||
| + | </code> | ||
| + | |||
| + | ==== Add variables ==== | ||
| + | You can set a variable with ''as'' on your templates: | ||
| + | <code> | ||
| + | {% url 'planning' as planning_url %} | ||
| + | </code> | ||
| + | Then you can use it later: | ||
| + | <code> | ||
| + | <a href="{{ planning_url }}"... | ||
| </code> | </code> | ||