Tengo 3 diseños diferentes de páginas de productos que me gustaría mostrar dependiendo de la información disponible sobre los productos. Usando el cruce tengo una clase llamada ProductFinder
que capta toda la información. Por ejemplo, el usuario va al dominio/verde/pequeño y ProductFinder
enumerará todos los productos de mi base de datos que son verdes y pequeños. Esta lista es self.products en la clase ProductFinder
. En mi __init__.py
he añadido la línea:En Pyramid, ¿cómo puedo usar un renderizador diferente según el contenido del contexto?
config.add_view('app.views.products', name='')
en products.py que tengo:
from pyramid.view import view_config
@view_config(context='app.models.ProductFinder', renderer='productpage.mako')
def products(context, request):
return dict(page=context)
Sobre la base de lo que está en context.products aunque me gustaría rendir un marrajo diferente. En los pilones que yo hubiera hecho algo como:
def products(context, request):
if len(context.products) == 1:
return render("oneproduct.mako")
elif len(context.product) == 2:
return render("twoproducts.mako")
Entonces, ¿cómo puedo hacer que una plantilla diferente, basado en el contenido de mi contexto?
Su primera línea allí "config.add_view ('app.views.products', name = '')" es muy probablemente * no * lo que desea. El @view_config es el único que creo que realmente te importa aquí. –