我有一个模板,需要根据用户是系统管理员还是普通管理员使用单独的基本模板。两个模板之间的主要区别在于,一个包含更多的导航栏项目和链接到应用程序的其他部分。我希望系统能够识别用户是系统管理员还是普通管理员,并扩展正确的基础模板。
我知道这可以通过创建第二个模板并在views.py文件中执行以下操作来完成:
if sysAdmin == True:
template = loader.get_template('app/template1.html')
else:
template = loader.get_template('app/template2.html')
两个用户组之间有多个共享视图,我不希望有4组几乎完全相同的模板。我更喜欢这样做:
{% if sysAdmin == True %}
{% extends "app/sysAdminBase.html" %}
{% elif sysAdmin == False %}
{% extends "app/adminbase.html" %}
{% end if %}
然而,这会抛出错误Invalid block tag on line 3: 'elif'. Did you forget to register or load this tag?
这是可能的还是我需要创建重复的模板?谢谢你
extends
标记可以传递一个变量,该变量解析为字符串,传递您想要在上下文中扩展的模板
if sysAdmin == True:
context['parent_template'] = 'app/sysAdminBase.html'
else:
context['parent_template'] = 'app/adminbase.html'
模板:
{% extends parent_template %}