首页 > 解决方案 > 我可以在 Django 框架中使用条件运算符为多个用户使用动态侧边栏菜单吗?

问题描述

我有 1 个管理员和 6 个特权。管理员通过使用复选框为每个用户提供特权,例如 a、b、c、d、e。布尔值存储在表 db_coslogin 中。如果管理员给我 a 和 c 的特权,那么,我需要看到只有 a 和 c 的侧边栏。但是当管理员登录时,它希望看到所有侧边栏,如 a、b、c、d、e。如何在此处设置功能和 sidebar.html 页面?注意:1.admin 和 privilageusers 存储在同一个表中,字段名称、密码、状态、a、b、c、d、e 2.if admin,status=1 如果特权用户,则 status=2。我不想在此处包含任何额外的 html 页面。我只想根据更改的权限动态设置我的 sidebar.html。

我的代码:{% tablename.status == 2 和 request.session.sid == tablename.id %} ?{% 复选框 == 1 %} : {% 复选框== 0 %}

我需要使用管理员提供给用户的 6 个特权来动态显示我的侧边栏。这是我在 django 函数中设置的 views.py。我使用复选框在这里选择了 6 个特权。特权是电子商务、服务、职业、课程、博客、离线。对于管理员状态 = 1,子管理员状态 = 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})

模型.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"

登录功能

def LOGIN1(request):
if request.method=="POST":
    uname = request.POST.get("username")
    passwrd = request.POST.get("password")
    a = db_coslogin.objects.filter(username=uname,password=passwrd,status=1,type1="admin")
    b = db_coslogin.objects.filter(username=uname,password=passwrd,status=2)
    c = db_coslogin.objects.all().filter(status=2)
    for opp in c:
        id=opp.id
        print(id,"id")

    print("++++++++++++")
    if a:
        print("-----------")

        return redirect("/adminindex")

    elif b:
        for i in b:
            request.session['sid']=i.id
            varr=i.id
            print(varr,"session id of subadmin")
            print("==============")

        return redirect("/adminindex")
    else:
        return redirect("/login")


else:
    return HttpResponse("noooooooooooo post")
    print("###########")

标签: pythondjangodynamicsidebarconditional-operator

解决方案


推荐阅读