django实现动态菜单的方式

Posted yoyo008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django实现动态菜单的方式相关的知识,希望对你有一定的参考价值。

1、model

from django.contrib.auth.models import  User  #django自带
class UserProfile(models.Model):
  """使用django 自带的用户控制权限的用户表"""
    user = models.OneToOneField(User,on_delete=models.CASCADE) # django自带用户表User模块和自定义的用户关联
name = models.CharField(max_length=32)
roles = models.ManyToManyField("Role",blank=True,null=True)

def __str__(self):
return self.name

class Role(models.Model):
"""角色表"""
name = models.CharField(unique=True,max_length=32)
menus = models.ManyToManyField("Menu")
def __str__(self):
return self.name

2、view
def app_index(request):
return render(request, ‘kingadmin/app_index.html‘)

3、html
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
{% for role in request.user.userprofile.roles.all %} <!--找到登陆用户的角色-->
<hr>
{% for menu in role.menus.all %} <!--找到角色对应的menu-->
                  <li>
<a href="{% if menu.url_type == 0 %}{% url menu.url_name %}{% else %} {{ menu.url_name }}{% endif %}" > <!--展示该用户的菜单-->
{{ menu.name }}
</a>
</li>
{% endfor %}
{% endfor %}

</ul>
</div>

以上是关于django实现动态菜单的方式的主要内容,如果未能解决你的问题,请参考以下文章

12个用得着的 JQuery 代码片段

Django 权限管理-后台根据用户权限动态生成菜单

Android - 导航抽屉 - 与动态菜单项重叠的片段

Django项目:CRM(客户关系管理系统)--82--72PerfectCRM实现CRM动态菜单和角色

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

全局视图 (base.html) 中的 Django 动态菜单在所有模板中可见