Es posible, pero probablemente poco hacky, complejo o complicado.
Lo que yo sugeriría es que sea un arquitecto para que tenga la parte de representación en la función utils.py y la use en una etiqueta simple en lugar de una etiqueta_in inclusión. De esta forma, puede usar la misma función de representación de utilidades fácilmente en las vistas.
En mi ejemplo imaginario (muy simplificado) tengo una lista de usuarios y un botón "Cargar más" que devuelve más usuarios.
cuenta/utils.py
from django.template.loader import render_to_string
def render_users(users):
return render_to_string("account/user_list_items.html", {"users": users})
cuenta/templatetags/account_tags.py
from django import template
from ..utils import render_users
register = template.Library()
@register.simple_tag
def list_users(users):
return render_users(users)
cuenta/views.py
from django.http import HttpResponse
from .models import User
from .utils import render_users
def load_more_users(request):
limit = request.GET["limit"]
offset = request.GET["offset"]
users = User.objects.all()[offset:offset + limit]
return HttpResponse(render_users(users))
simple es mejor que complejo.
Siempre he tenido un problema al devolver xml/json y luego tener javascript renderizar los datos en html. No está violando los principios DRY porque ahora tenemos el código duplicado en la plantilla de django y en el javascript. – killerbarney
Menciona que se puede hacer, pero no incluye un ejemplo. ¿Puede mostrarme cómo hacerlo o una página que lo tiene? – killerbarney