HTML comment showing which templates were considered for a page

Closes #171
This commit is contained in:
Simon Willison 2017-12-09 13:47:32 -08:00
commit 7126d08f10
No known key found for this signature in database
GPG key ID: 17E2DEA2588B7F52
3 changed files with 20 additions and 2 deletions

View file

@ -45,10 +45,16 @@ connections = threading.local()
class RenderMixin(HTTPMethodView): class RenderMixin(HTTPMethodView):
def render(self, templates, **context): def render(self, templates, **context):
template = self.jinja_env.select_template(templates)
select_templates = ['{}{}'.format(
'*' if template_name == template.name else '',
template_name
) for template_name in templates]
return response.html( return response.html(
self.jinja_env.select_template(templates).render({ template.render({
**context, **{ **context, **{
'app_css_hash': self.ds.app_css_hash(), 'app_css_hash': self.ds.app_css_hash(),
'select_templates': select_templates,
} }
}) })
) )

View file

@ -33,6 +33,6 @@
{% endif %}{{ metadata.source or metadata.source_url }}{% if metadata.source_url %}</a>{% endif %} {% endif %}{{ metadata.source or metadata.source_url }}{% if metadata.source_url %}</a>{% endif %}
{% endif %} {% endif %}
</div> </div>
{% if select_templates %}<!-- Templates considered: {{ select_templates|join(", ") }} -->{% endif %}
</body> </body>
</html> </html>

View file

@ -143,6 +143,18 @@ templates::
table-mydatabase-Food-Trucks-399138.html table-mydatabase-Food-Trucks-399138.html
table.html table.html
You can find out which templates were considered for a specific page by viewing
source on that page and looking for an HTML comment at the bottom. The comment
will look something like this::
<!-- Templates considered: *query-mydb-tz.html, query-mydb.html, query.html -->
This example is from the canned query page for a query called "tz" in the
database called "mydb". The asterisk shows which template was selected - so in
this case, Datasette found a template file called ``query-mydb-tz.html`` and
used that - but if that template had not been found, it would have tried for
``query-mydb.html`` or the default ``query.html``.
It is possible to extend the default templates using Jinja template It is possible to extend the default templates using Jinja template
inheritance. If you want to customize EVERY row template with some additional inheritance. If you want to customize EVERY row template with some additional
content you can do so by creating a ``row.html`` template like this:: content you can do so by creating a ``row.html`` template like this::