django - My site shows menus based on a users privs. I have a function that returns the privs as a dictionary as below:
问题描述
i need to show my sidebar dynamically by using 6 privilages which giving by admin to users. this is my views.py which i set in my django function.i used checkbox to select 6 privilages here.privilages are ecom,service,career,course,blog,offline. for admin status=1,subadmin status=2.
def SIDEMENU(request):
# ii=request.session['sid']
a=db_coslogin.objects.all().filter(ecom=1,status=2)
b=db_coslogin.objects.all().filter(blog=1,status=2)
c=db_coslogin.objects.all().filter(servive=1,status=2)
d=db_coslogin.objects.all().filter(offline=1,status=2)
e=db_coslogin.objects.all().filter(career=1,status=2)
f=db_coslogin.objects.all().filter(course=1,status=2)
return render(request, "sidebar.html",{'ecomr':a,'blog':b,'servive':c,'offline':d,'career':e,'course':f})
models.py
class db_coslogin(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
username = models.CharField(max_length=100)
password = models.CharField(max_length=100)
type1 = models.CharField(max_length=50)
last_updated = models.DateTimeField(auto_now_add=False, auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
is_delete = models.IntegerField(default=0)
ecom = models.IntegerField(default=0)
service = models.IntegerField(default=0)
career = models.IntegerField(default=0)
cource = models.IntegerField(default=0)
offline = models.IntegerField(default=0)
blog = models.IntegerField(default=0)
status = models.IntegerField(default=0)
class Meta:
db_table = "db_coslogin"
解决方案
如果您想继续使用现有模型和视图,可以在模板中执行以下操作:
{% if ecomr.0.ecom %}
{% include 'ecom_menu.html' %}
{% elif blog.0.blog %}
{% include 'blog_menu.html' %}
{% else %}
...
{% endif %}
但是,我强烈建议阅读 Django 的内置权限https://docs.djangoproject.com/en/3.1/topics/auth/default/#default-permissions。这将允许您编写更清晰的代码,更重要的是,更安全。
推荐阅读
- firebase - Error:Failed to resolve: common in android studio
- javascript - 自动获取id
- python - Module installed in virtual environment, yet my program raises a ModuleNotFoundError
- html - How to dynamically add meta tag using XSLT
- ruby-on-rails - 构建多态关联 Rails
- wordpress - 又一个 Wordpress 退出问题
- java - How this recursive call gets executed?
- wordpress - 更改主题名称后自定义CSS不起作用?
- postgresql - Postgresql JDBC 有时不能选择刚刚插入的
- python-3.x - Converting epoch time to string with specific format