¿Hay algo así como la vista parcial de .net MVC 3 en el matraz?
Quiero incrustar un widget en una página de vista, y ese widget tiene su propia lógica.Vista parcial del matraz como MVC 3
Respuesta
Hay varias maneras de incluir el contenido en una plantilla Jinja2:
La declaración include
rendirá la vista suministrado (con el contexto actual por defecto):
{# In your_view_template.jinja #}
{# ... your code ... #}
{% include "widgets/your_widget.jinja" %}
{# ... your code ... #}
También puede definir macros y import ellos en la plantilla de vista:
{# In your_view_template.jinja #}
{% import "widgets/your_widget.jinja" as your_widget %}
{# ... your code ... #}
{{ you_widget.render(your, important, variables, etc.) }}
{# ... your code ... #}
Tanto import
y 0.123.puede utilizar variables, así que algo como esto es posible:
# In your view
if complex_conditions.are_true():
widget = "widgets/special_custom_widget.jinja"
else:
widget = "widgets/boring_widget.jinja"
render_template("your_view.jinja", widget=widget)
{# In your_view_template.jinja #}
{% include widget %}
{#
import widget as sidebar_widget
{{ sidebar_widget.render() }}
would also work
#}
Estos ambos funcionan de manera similar a las vistas parciales de MVC (al menos, en tanto que los entiendo)
Alternativamente, si el widget necesita tener acceso a las ACL o información que no debería estar disponible para la capa de plantilla y no puede volver a escribir su vista para aprovechar include
y import
puede tomar la sugerencia de @ [Alex Morega] y pasar un invocable como variable a la plantilla y renderizar allí.
# In your view
render_template("your_view.jinja", widget=you_callable, etc, etc, etc)
{# In your_view_template.jinja #}
{# ... your code ... #}
{{ widget() }}
{# Or, if you are returning HTML that is not a Markup construct #}
{{ widget() | safe }}
{# ... your code ... #}
Se podría incluso crear su propia template loader y cargar diferentes plantillas en función de casi nada . Pero eso definitivamente sería excesivo para este caso.
- 1. vista parcial nuevamente la afeitadora usando JSON (ASP MVC 3)
- 2. Render vista parcial onclick en asp.net mvc 3 proyecto
- 3. ASP.NET MVC acción 3 controlador de vista parcial
- 4. ASP.NET MVC 3 Vista parcial en la página de diseño
- 5. vista parcial sin atributos de validación (ASP.NET MVC 3)
- 6. Vista parcial de retorno de MVC como JSON
- 7. Cargar vista parcial en un div MVC
- 8. Validación parcial de ASP.NET MVC 3 Modelos
- 9. Actualizar periódicamente una vista parcial (ASP.Net MVC)
- 10. MVC 3, (cuchilla de afeitar) carga parcial con validación
- 11. MVC 3 - muestra el valor del diccionario en la vista
- 12. MVC 3 Razor. La validación de la vista parcial no funciona
- 13. Inhabilitar el almacenamiento en caché en una vista parcial en MVC 3
- 14. Sección de representación desde la vista parcial utilizando el motor Razor View en MVC 3
- 15. Modelo de vista parcial de MVC sin actualizar
- 16. Asp Mvc Devolver una vista parcial con Ajax no funciona
- 17. La vista parcial hereda del diseño principal
- 18. Asp.net MVC - Render una vista parcial de un área
- 19. Lista de tipos personalizados de ASP.NET MVC en vista parcial
- 20. Actualizando vista parcial con Jquery en ASP.NET MVC C#
- 21. Render vista parcial con el modelo dinámico en el motor de vista Maquinilla de afeitar y ASP.NET MVC 3
- 22. Enrutamiento del subdominio del matraz?
- 23. Crear controlador para vista parcial en ASP.NET MVC
- 24. MVC - Uso de Ajax para hacer una vista parcial
- 25. ASP.NET MVC representación vista parcial con jQuery ajax
- 26. Actualizar una vista parcial desde otra vista parcial - ASP.NET MVC2
- 27. Vista parcial de carga de ASP.NET MVC 2 usando jQuery - sin validación del lado del cliente
- 28. Por qué usar Vista parcial de ASP.NET MVC (.ascx)
- 29. ASP.NET MVC - Actualizar Vista parcial cuando DropDownList cambió
- 30. asp.net acción de controlador de vista parcial MVC
Puede escribir el código del widget en una función y llamar a esa función desde una vista, ¿no es suficiente? –
@Alex Morega cómo llamar a la función en la plantilla de vista jinja2? – magicshui
@magicshui Lo pasas a render_template como argumento ... – plaes