我可以根据条件扩展我的模板吗 -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 %}
我有一个模板需要使用单独的基本模板,具体取决于用户是系统管理员还是普通管理员。两个模板之间的主要区别在于,一个模板包含更多导航栏项目和指向应用程序其他部分的链接。我希望系统能够识别用户是系统管理员还是普通管理员,并从该测试中扩展正确的基本模板。
我知道这可以通过创建第二个模板并在 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 %}