我可以基于一个条件扩展我的模板吗?



我有一个模板,需要根据用户是系统管理员还是普通管理员使用单独的基本模板。两个模板之间的主要区别在于,一个包含更多的导航栏项目和链接到应用程序的其他部分。我希望系统能够识别用户是系统管理员还是普通管理员,并扩展正确的基础模板。

我知道这可以通过创建第二个模板并在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 %}

相关内容

  • 没有找到相关文章

最新更新