Request.user недоступен в подшаблоне Streamblocks
В моем главном шаблоне я могу вызвать:
{% load static wagtailuserbar wagtailcore_tags %}
{% load navigation_tags %}
{% if request.user.is_authenticated %}
You're logged in
{% endif %}
но если я вызываю это в моем подшаблоне StreamBlock, это не работает.
{% load wagtailcore_tags wagtailimages_tags %}
{% if request.user.is_authenticated %}
<div class="container">
...
</div>
{% endif %}
Any ideas?
При выводе StreamField на страницу обязательно используйте тег include_block, а не просто выводите значение в теге {{ ... }}
. Это гарантирует, что все переменные, определенные во внешнем шаблоне, включая request
, будут переданы в подшаблон. Если вы используете {{ ... }}
, то подшаблон все равно будет выведен, но единственными доступными переменными будут те, которые предоставлены самим блоком.
{% include_block %}
можно использовать как для отдельного блока, так и для потока в целом:
{% load wagtailcore_tags %}
{% include_block page.body %}
or
{% for block in page.body %}
{% include_block block %}
{% endfor %}
Вам также потребуется сделать это в любых подшаблонах, которые отображают подшаблоны (например, если у вас есть вложенный StreamBlock внутри StreamField, шаблон для этого StreamBlock также должен использовать include_block
).