Tekrar nasıl "blok" django şablon
Aynı kullanmak istiyorum{% block %}aynı django şablon iki kez. Bu bloğu bir kez daha temel şablon olarak görünmesini istiyorum
# base.html
<html>
<head>
<title>{% block title %}My Cool Website{% endblock %}</title>
</head>
<body>
<h1>{% block title %}My Cool Website{% endblock %}</h1>
</body>
</html>
Ve sonra bunu uzatmak:
# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}
# pictures.html
{% extends 'base.html' %}
{% block title %}My Pictures{% endblock %}
# cats.html
{% extends 'base.html' %}
{% block title %}My Cats{% endblock %}
Django blok sadece bir kez görünmesini istiyor gibi bir durum olsun, karşılık vereceğim
/ TemplateSyntaxError
< . ''adı ile 'başlık' görünür etiketi blok ^güçlü birden çok kez
Hızlı ve kirli bir çözüm blok çoğaltma olurdubaşlıkiçinebaşlık sütununu başlık1 olarakvetitle2:
# blog.html
{% extends 'base.html' %}
{% block title1 %}My Blog{% endblock %}
{% block title2 %}My Blog{% endblock %}
Ama bu DRY ilkesini ihlal eder. Bilmiyorum çünkü miras şablonları bir sürü işim var çok zor olurdu, ve de ister cehenneme gider ;-)
Herhangi bir hile ya da iş çevresinde bu sorun var mı? Nasıl tüm kod çoğaltmadan benim şablon aynı blok tekrarlayabilirsiniz?
CEVAP
Django şablon makroları eklentisi kullanın:
http://www.djangosnippets.org/snippets/363/ (django < 1.4)
ya
https://gist.github.com/1715202 (django >= 1.4)
Daha sonra
# base.html
{% macro title %}
{% block title %}My Cool Website{% endblock %}
{% endmacro %}
<html>
<head>
<title>{% usemacro title %}</title>
</head>
<body>
<h1>{% usemacro title %}</h1>
</body>
</html>
ve
# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}
Django İsim: "geçerli işlem iptal...
Stil öznitelik " görüntülemek için...
Nasıl doğru ActionScript 3 SOAP web se...
Nasıl "mevcut çerçeveler" ekl...
Bir dize kontrol etmek için nasıl &quo...