Creé una etiqueta de plantilla personalizada para consultar una lista de objetos, pero cada objeto tiene una etiqueta asociada. Me gustaría pasar un objeto como filtro a mi etiqueta de plantilla para mostrar solo ciertos objetos etiquetados en mi plantilla.
Etiqueta de plantilla
@register.inclusion_tag( 'tags/_documents_snippets.html', takes_context=True ) def document_snippets(context): Document = get_document_model() documents = Document.objects.all() return { 'documents': documents, 'request': context['request'], }Modelo
<div class="col-md-12"> <ul class="c-content-list-1 c-separator-dot c-square"> {% for doc in documents %} <li><a href="{{ doc.url }}">{{ doc.title }}</a></li> {% endfor %} </ul> </div>Etiqueta
{% document_snippets %} ¿Puedo hacer algo como {% document_snippets|tags="AO Now" %}
Puede agregar argumentos arbitrarios a las etiquetas de plantilla como puede hacerlo con las funciones regulares. Por ejemplo:
@register.inclusion_tag( 'tags/_documents_snippets.html', takes_context=True ) def document_snippets(context, **kwargs): Document = get_document_model() documents = Document.objects.filter(**kwargs) return { 'documents': documents, 'request': context['request'], }Y luego llamarlo con:
{% document_snippets tags="AO Now" %}