下面的代码来自views.py,它获取配置文件,这是django中user模块的扩展,并且它将该配置文件作为字典传递给HTML。
views.py
def render_add_req(request):
profile = Profile.objects.get(user=request.user)
return render(request, 'add_item_request.html', {'profile': profile})
这是要呈现的html代码,在此我使用配置文件对象的is_admin属性来确定给定用户是管理员还是员工,之后我确定要根据用户扩展哪些基础模板。
add_item_request.html
{% if profile.is_admin == 'a' %}
{% extends 'admin_base.html' %}
{% else %}
{% extends 'staff_base.html' %}
{% endif %}
{% block title %}
Item Req : Add
{% endblock %}
{% block content %}
Item Req : Add
{% endblock %}
包括:Abdul Aziz Barkat的回答
不能在if-else语句中放置extends。
检查,Python/django - if语句在模板中围绕extends
Django {% with %}标签在{% if %} {% else %}标签内?
Q如何在单个html页面中根据不同的用户类型扩展不同的基础模板?
1一个简单的方法是在上下文中传递模板名,因为extends可以使用变量名,所以传递像{'template_name': 'admin_base.html',…}和在模板{% extends template_name %}
2从视图中检查用户的类别,并为管理员和普通用户呈现单独的模板