На моем сайте отображаются меню, основанные на привилегиях пользователей. У меня есть функция, которая возвращает привилегии в виде словаря, как показано ниже:

#django #dynamic #sidebar #privileges

#джанго #динамический #боковая панель #привилегии

Вопрос:

мне нужно динамически показывать свою боковую панель, используя 6 привилегий, которые администратор предоставляет пользователям. это мой views.py который я установил в своей функции django.я использовал флажок, чтобы выбрать здесь 6 привилегий. привилегии — это ecom, сервис, карьера, курс, блог, офлайн. для статуса администратора=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})
 

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"
 

Комментарии:

1. если кто-нибудь может помочь me..do это как можно скорее .. пожалуйста

2. Можете ли вы показать свою модель?

3. здесь я добавил models.py .

4. Спасибо. В качестве примечания, модели, по соглашению, обычно называются заглавными буквами. Например: DBCosLogin

Ответ №1:

Если вы хотите продолжить использовать существующую модель и представление, вы можете сделать что-то подобное в шаблоне:

 {% 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 . Это позволит вам писать более чистый код и, что более важно, будет более безопасным.