Pergunta

Gostaria de saber se alguém pode me ajudar a descobrir a melhor abordagem para o seguinte problema. Estou construindo um aplicativo da Web que usa o Django Modelating para construir seu componente da interface do usuário da web. Existem vários elementos HTML comuns, como cabeçalho / rodapé, cabeça de HTML, cabeçote de masthe, etc. Gostaria de codificá -los uma vez e "incluir / combiná -los" com outros modelos representando a funcionalidade principal do aplicativo.

Isso é possível usando modelos de django? Se sim, como posso conseguir isso?

Foi útil?

Solução

Você pode usar o Django's extends marcação. Diga que você tinha um cabeçalho e rodapé. Você pode fazer um modelo, chamado, digamos, foo.django:

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

{% block content %}
{% endblock %}

<!-- html footer -->

Então, você pode fazer outro modelo, digamos, bar.django:

{% extends "foo.django" %}

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

... que então renderá:

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

This overrides the content block in foo.django.

<!-- html footer -->

Há boas instruções sobre modelos de django em http://www.djangobook.com/en/1.0/chapter04/.

Outras dicas

o {% extends %} e {% include %} Os métodos são bons para elementos de página que não precisam de informações extras no contexto.

Assim que você precisar inserir mais coisas no contexto do banco de dados, as tags de modelo são úteis. Como exemplo, o contrib.comments aplicativo incluído com django define um {% get_comment_list %} Tag de modelo para recuperar comentários anexados a uma determinada instância do modelo. Veja como você usaria:

<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>

Você pode salvar isso em um modelo separado e {% include %} em outros modelos.

Para seu próprio conteúdo, você pode escrever suas próprias tags de modelo personalizado. Seguir a documentação. Sempre que possível, é conveniente escrever tags usando o tag simples mecanismo. Você encontrará tags de modelo prontos djangosnippets.org e a blogosfera.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top