Como lidar com variáveis ??em modelos de herança
-
05-07-2019 - |
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.
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.