抱歉这个愚蠢的问题,我迷失了。
我有一个模板和一个模板标签:
menu_tags.py
from django import template
from menu.models import Button
register = template.Library()
@register.inclusion_tag('menu/home.html')
def show_menu():
buttons = Button.objects.all()
return {'buttons': buttons}
而且:
home.html的
{% for button in buttons %}
{% if user.is_authenticated %}
stuff
{% endif %}
{% endfor %}
我想知道,如何让user.is_authenticated工作?我知道我必须输入一些东西,但在哪里?在menu_tags中导入它似乎不起作用。
谢谢!
答案 0 :(得分:0)
根据评论中其他用户的建议,请尝试以下操作:
from django import template
from menu.models import Button
register = template.Library()
@register.inclusion_tag('menu/home.html', takes_context=True)
def show_menu():
request = context['request']
if request.user.is_authenticated: # if Django 1.10+
buttons = Button.objects.all()
else:
buttons = None
return {'buttons': buttons}
然后在您的模板中,确保加载新的模板标签并尝试:
{% load menu_tags %}
{% for button in buttons %}
{{ button }}
{% endfor %}