在Django中导入模板的东西在哪里?

时间:2018-01-07 08:23:06

标签: django

抱歉这个愚蠢的问题,我迷失了。

我有一个模板和一个模板标签:

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中导入它似乎不起作用。

谢谢!

1 个答案:

答案 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 %}