I have a little statistics block that I want to be available in several places: the profile page of a user, and a search page with a list of users.
What would be the best way to proceed in repeating this block? I come from a PHP background, and in PHP it would be a simple include with passing some simple arguments. In django, I basically want to be able to call something like :
{% stats_block user %}
Where user is the object containing all the user info. I was thinking about a simple template tag, but the block is pretty big and I don't want to put eveything in one line in the template tag.
Thanks a lot!
You can write a custom template tag, which can render a specific template. Refer Inclusion tags.
From the link: Another common type of template tag is the type that displays some data by rendering another template.
include template tag
You can include templates with arguments:
Template inheritance
But the best way to repeat a block in all templates, is to have a base template say base.html:
For example, the contact template could be as simple as:
Refer to documentation on template inheritance for more.
inclusion_tag
Finally, another great option is to make an inclusion_tag, which allows to hook some python context processing before actual template inclusion.