2017-10-17 44 views
1

我想在我的django模板中加载一些HTML元素,如果在我的settings.py文件中定义了特定的应用程序。但它不起作用。 if语句的行为类似于应用程序不存在:未能检查django模板中的INSTALLED_APPS

  {% if 'myapp.edit_data' in INSTALLED_APPS %} 
       <p> dfsdfsdf </p> 
      {% endif %} 

我也尝试过使用其他应用程序,并获得相同的行为。我错过了什么?

+1

你是否将任何名为INSTALLED_APPS的东西传递给模板上下文? –

回答

3

您无法自动访问模板中的设置,如INSTALLED_APPS。您必须将其添加到模板上下文中。

例如,在视图中,你可以这样做:

from django.conf import settings 

def my_view(request): 
    return render(request, 'my_template.html', {'INSTALLED_APPS': settings.INSTALLED_APPS}) 

如果检查是在基本模板,那么你可能想创建一个template context processor而不是改变每个视图的。

+0

谢谢,我删除了反引号。 – Alasdair