我无法获得使用{% if perms.myapp.foo %}
<p>In lookup works, too.</p>
{% endif %}
加载的django模板的权限。
inclusion_tag
以上在我的&#34; main&#34;从我的视图中调用的模板。
但是,如果我在request
模板中使用相同的代码,那么它就不起作用。我想也许是因为标签没有通过{{ perms }}
?
django doco here表示用户权限存储在模板变量{{ perms }}
中。这不适用于自定义标签吗?我假设这个应该工作,无法想象它为什么会被设计出来?
拥有超级用户&#39;的用户状态也会失败,如果takes_context
丢失,这是有道理的。
我调查了y
doco link here,但还没有能够做到这一点。不确定那是否会让我误入歧途?
========更新==============================
答案 0 :(得分:1)
按照建议回答我自己的问题。
所以我按照用户'alasdair'的建议进一步调查了'takes_context'。我得到了它的结果。这是我发现的。
内部myapp-tags.py
:
@register.inclusion_tag('templatefilename.html', takes_context=True)
def show_mycustomtag(context, start_date, end_date):
#your code here
return {
'start_date': start_date,
'end_date': end_date,
'perms': context['perms']
}
takes_context=True
。context
个变量添加到return
中的“自定义标记”中。就我而言,我需要传递的perms
变量。{% if perms.myapp.foo %}
等代码:)在Django doco中解释here然而我有点困惑,因为我将上下文变量与特定于标签的变量混合在一起但是从上面可以看出,那不是问题!