Esiste qualcosa come. La vista parziale di MVC 3 in un pallone?
Desidero incorporare un widget in una pagina di visualizzazione e tale widget ha una propria logica.Visualizzazione parziale del pallone come MVC 3
risposta
Ci sono diversi modi per includere il contenuto in un modello Jinja2:
La dichiarazione include
visualizzerà la vista in dotazione (con l'attuale contesto di default):
{# In your_view_template.jinja #}
{# ... your code ... #}
{% include "widgets/your_widget.jinja" %}
{# ... your code ... #}
È anche possibile definire macros e li import nel modello di 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 ... #}
Sia import
e 0.123.possibile utilizzare le variabili, in modo da qualcosa di simile a questo è possibile:
# 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
#}
Questi entrambi funzionano in modo simile a una vista parziale di MVC (almeno, in quanto li capisco)
In alternativa, se il tuo widget ha bisogno di accedere alle ACL o informazioni che non dovrebbero essere disponibili per il livello template e non puoi riscrivere la tua vista per sfruttare include
e import
puoi prendere il suggerimento di @ [Alex Morega] e passare un callable come variabile al template e renderizzare è lì.
# 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 ... #}
Si potrebbe anche creare il proprio template loader e caricare i modelli differenti a seconda quasi nulla . Ma sarebbe sicuramente eccessivo per questo caso.
- 1. Differenza tra MVC 3 Pagina parziale (Razor) e MVC 3 Visualizza la pagina con Layout (Razor)?
- 2. parziale page caching e VaryByParam in ASP.NET MVC 3
- 3. Render vista parziale con il modello dinamico Razor motore di visualizzazione e ASP.NET MVC 3
- 4. Azione controller ASP.NET MVC 3 per vista parziale
- 5. Render vista parziale onclick in asp.net MVC 3 progetto
- 6. ASP.NET MVC 3 Vista parziale nella pagina di layout
- 7. asp.net MVC vista parziale azione del controllore
- 8. Rasoio MVC 3. Convalida della vista parziale non funziona
- 9. MVC 3 Impossibile passare la stringa come modello di visualizzazione?
- 10. Come compilare la vista parziale del rasoio mvc
- 11. MVC 3 La proprietà del modello non viene impostata nella vista parziale denominata da html.action
- 12. Database del pallone Numero
- 13. Visualizzazione di un'immagine caricata in MVC 3 Razor
- 14. ReportViewer in MVC 4 parziale
- 15. MVC restituisce la vista parziale come JSON
- 16. Spring MVC + Hibernate: aggiornamento parziale del modello dal browser
- 17. MVC Vista parziale aggiornamento Ajax
- 18. Esegui l'azione del controller MVC senza visualizzazione?
- 19. AngularJS: $ viewContentLoaded attivato prima della visualizzazione parziale
- 20. MVC 3 svantaggi del contenitore tempdata
- 21. ASP.NET MVC 3 _Layout.cshtml Controller
- 22. Come capire questo codice del pallone? ?
- 23. ASP.NET MVC - Aggiornamento parziale del modello dalla vista
- 24. Visualizzazione rendering (o parziale) In un altro progetto?
- 25. Errore di visualizzazione visualizzazione pallone "La funzione di visualizzazione non ha restituito una risposta"
- 26. debug di richiesta del pallone
- 27. rails 3 render parziale con parametri
- 28. ASP.NET MVC Utilizzo del rendering parziale da un helper HTML
- 29. rendering parziale del patrimonio
- 30. Come visualizzare il contenuto html attraverso i messaggi del pallone?
È possibile scrivere il codice del widget in una funzione e chiamare tale funzione da una vista, non è sufficiente? –
@Alex Morega come chiamare la funzione nel modello di visualizzazione jinja2? – magicshui
@magicshui Passalo in render_template come argomento ... – plaes