Herramientas de usuario

Herramientas del sitio


wiki2:python:django:templates

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
wiki2:python:django:templates [2018/10/11 19:41]
alfred creado
wiki2:python:django:templates [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
 ====== Django Templates ====== ====== Django Templates ======
-Configure template directories:+===== Basic ===== 
 +==== Configure ​global ​template directories ​==== 
 <code python> <code python>
 TEMPLATES = [ TEMPLATES = [
Línea 8: Línea 10:
         ...         ...
 </​code>​ </​code>​
-Render a Template:+ 
 +==== Render a template ==== 
 <code python> <code python>
 import django.template.loader as loader import django.template.loader as loader
Línea 16: Línea 20:
  
 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 =====
 +
 +==== Index of the loop ====
 +<​code>​
 +{% for pledge_form in pledge_forms %}
 +<form method="​post"​ class="​generated-form"​ id="​form-{{forloop.counter}}">​
 +...
 +</​code>​
 +==== Numeric loop  ====
 +<​code>​
 +{% for work in "​xxx"​ %}
 +
 +{% endfor %}
 +</​code>​
 +
 +==== Not repeat code ====
 +Add a template in ''​openawards/​reusable/​worklist.html'':​
 +<​code>​
 +<​div>​hola</​div>​
 +</​code>​
 +Then in another:
 +<​code>​
 +{% for work in "​xxx"​ %}
 +{% include '​openawards/​reusable/​worklist.html'​ %}
 +{% endfor %}
 +</​code>​
 +You even can send parameters:
 +<​code>​
 +{% 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>​
wiki2/python/django/templates.1539286879.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)