Domanda

Mi chiedo se qualcuno può aiutarmi a capire il miglior approccio al seguente problema. Sto creando un'applicazione Web che utilizza il modello Django per costruire il suo componente dell'interfaccia utente Web. Esistono numerosi elementi HTML comuni come intestazione / piè di pagina, intestazione HTML, masthead ecc. Vorrei codificarli una volta e "includere / combinare". con altri modelli che rappresentano la funzionalità dell'applicazione principale.

È possibile usare i modelli Django? In tal caso, come potrei fare per realizzarlo?

È stato utile?

Soluzione

Puoi usare il tag extends di django. Supponi di avere un'intestazione e un piè di pagina. Potresti creare un modello, chiamato, diciamo, foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

Quindi, puoi creare un altro modello, ad esempio bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

... che verrà quindi visualizzato:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

Ci sono buone istruzioni sui modelli di django a http://www.djangobook.com/en/ 1.0 / chapter04 / .

Altri suggerimenti

I metodi {% extends%} e {% include%} sono utili per gli elementi della pagina che non necessitano di informazioni aggiuntive nel contesto.

Non appena è necessario inserire più informazioni nel contesto dal database, i tag modello sono utili. Ad esempio, il contrib. commenti l'app inclusa in Django definisce un tag modello {% get_comment_list%} per recuperare i commenti allegati a una determinata istanza del modello. Ecco come lo useresti:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

Puoi salvarlo in un modello separato e {% include%} in altri modelli.

Per i tuoi contenuti puoi scrivere i tuoi tag modello personalizzati. Segui la documentazione . Ove possibile, è conveniente scrivere tag usando il tag semplice . Troverai utili tag modello pronti su djangosnippets.org e blogosfera .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top