簡體   English   中英

Django 如何創建僅對某些類型的用戶可見的按鈕

[英]Django how to create button that visible only some type of users

我用 Django 創建了一個系統。 我有幾個用戶,這些用戶可以有不同的rank 我有一個頁面,只有“ lead ”用戶才能看到該頁面。 在用戶個人資料頁面中,我想創建一個僅對lead客戶可見的按鈕。

模型.py

class UserProfile(AbstractUser):
    ranks = (
        ..
        ('lead', 'Lead'),
        ('manager', 'Manager'),
        ...
    )
    comp_name = models.CharField(max_length=200, default='', blank=True, null=True)
    user_id = models.UUIDField(default=uuid.uuid4(), editable=False, unique=True)
    username = models.CharField(max_length=500, unique=True)
    ...

視圖.py

def is_lead(user):
    return user.rank == 'lead'

@user_passes_test(is_lead)
@login_required
def lead_page(request):

    return render(request, 'lead.html')

配置文件.html

<div class="col">
     <a href="/leadpage" class="btn btn-outline-success"> Enter </a>
</div>

您檢查用戶的排名。

{% if user.rank == "lead" %}
<div class="col">
     <a href="/leadpage" class="btn btn-outline-success"> Enter </a>
</div>
{% endif %}

等等

您必須在context中包含一個變量,該變量控制模板中按鈕的可見性。 所以想象你的觀點是這樣的:

def myview(request):
   # pseudocode!
   context = dict()
   if user is lead:
      context['show-lead-button'] = True
   return render(request, 'mytemplate.html', context)

在您的模板中,您必須檢查此變量:

{% if show-lead-button %}
<a href="#">Only lead can see!</a>
{% endif %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM