我可以根据条件扩展我的模板吗 -Django

Can I Extend My Template Based on a Condition -Django

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

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