emmm es correcto, pero para ser esquisito con el MVC eso deberia estar en la logica de la vista, no de la plantilla,
mm yo crearla varias plantilla, por lo general dejo un tag al estilo
<nav>
en algun lugar donde estoy almacenando las plantillas escribo un fragmento de HTML con los menu de cada uno
menu/
admin.tpl
almacenero.tpl
vendedor.tpl
creo una funcion de carga por ahi en algun lugar donde este almacenando mis funciones
def get_user_menu(request):
"""
carga el menu de acuerdo al tipo de usuario
"""
if request.user.is_authenticated():
group_name = request.user.groups.all()[0].name
if group_name == "Administrador":
tpl_name = "menu/administrado.tpl"
elif group_name == "Vendedor":
tpl_name = "menu/vendedor.tpl"
else:
tpl_name = "menu/no-login.tpl"
else:
tpl_name = "menu/no-login.tpl"
return render_to_string(tpl_name, {})
y en la vista digamos que la la variable data almacenaria el contexto
def mi_vista(request):
template = get_template('plantilla.tpl')
data["menu"] = get_user_menu(request)
#el resto del codigo
es mas rebuscada y ya se me diran es repetitivo, pero la idea es que la logica de la aplicacion este dentro de la vista
no de la plantilla mientras sea posible.
Saludos