Alb*_*lla 13 django block django-templates
我有一个小的统计数据块,我想在几个地方可用:用户的个人资料页面和一个用户列表的搜索页面.
重复这个区块的最佳方法是什么?我来自PHP背景,在PHP中,它将是一个简单的包含传递一些简单的参数.在django中,我基本上希望能够调用类似于:
{% stats_block user %}
Run Code Online (Sandbox Code Playgroud)
其中user是包含所有用户信息的对象.我在想一个简单的模板标签,但是这个块非常大,我不想把eveything放在模板标签的一行中.
非常感谢!
jpi*_*pic 43
您可以包含带参数的模板:
{% include "name_snippet.html" with person="Jane" greeting="Hello" %}
Run Code Online (Sandbox Code Playgroud)
但是在所有模板中重复块的最佳方法是使用base.html的基本模板:
<html>
...
<div id="user-block">
{% if request.user.is_authenticated %}
hello {{ request.user }}
{% else %}
<a href="{% url acct_signup %}">Sign up!</a>
{% endif %}
</div>
...
<div id="body">
{% block body %}
{% endblock %}
</div>
...
</html>
Run Code Online (Sandbox Code Playgroud)
例如,联系人模板可以简单如下:
{% extends 'base.html' %}
{% block body %}
Contact use: foo@example.com
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅有关模板继承的文档.
最后,另一个很好的选择是创建一个inclusion_tag,它允许在实际模板包含之前挂钩一些python上下文处理.