Pergunta

Eu só quero definir o atributo id da tag body no modelo filho. Primeira solução funciona perfeitamente:

base.html:

[body{% block bodyid %}{% endblock %}]

child.html:

{% block bodyid %} id="myId"{% endblock %}

É simples e cool! Mas eu não gosto de ponto id = "myId" em cada modelo filho. Eu quero apenas enviar value 'myId' para template pai, onde ele colocou a id = "....". Então, eu inventar esse método:

base.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}]

child.html:

{% block bodyid %}
    {% with 'myId' as bodyid %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

Mas é terrível e tedioso para comparar primeira solução. Existe algum método bom para fazer isso?

Este problema é mais profundo, do que gerenciar bodyId. Eu acho, eu tento encontrar e organizar sistema submodelo através da herança do modelo Django padrão.

Foi útil?

Solução

No modelo base:

<body id="{% block bodyid %}{% endblock %}">

No modelo de criança:

{% block bodyid %}myId{% endblock %}

Se entendi sua pergunta corretamente, isso deve ser suficiente para conseguir o que deseja; somente envia o ID actualy (myId) para o modelo de base.

Outras dicas

Você, se você preferir, defina esta via o seu código - de modo que seus do id são parte de seu objeto de contexto, e por isso não são obrigados a ser introduzido nos modelos da criança, apenas os pontos de vista que eles chamam

.

Você pode, então, dizer ao seu modelo de base para obter o ID do objeto de contexto, ou melhor, é só usar a sintaxe do modelo para isso:

<body id="{{ body_id }}">

A preferência pessoal aqui é claro, e isso depende da estrutura de seus modelos e pontos de vista, mas é a maneira que eu faria isso.

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