Trả lời

57

Check-out is_superuser trên User đối tượng:

{% if request.user.is_superuser %} 
    ... 
    <button>...</button> 
    ... 
{% else %} 
... 
{% endif %} 

EDIT: sau @ mustafa-0x bình luận

Ở trên giả định rằng bạn có django.core.context_processors.request có trong bạn TEMPLATE_CONTEXT_PROCESSORS thiết mà không phải là mặc định.

Các default setting for TEMPLATE_CONTEXT_PROCESSORS:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.core.context_processors.debug', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.media', 
    'django.core.context_processors.static', 
    'django.core.context_processors.tz', 
# 'django.core.context_processors.request', 
    'django.contrib.messages.context_processors.messages', 
) 

đã bao gồm django.contrib.auth.context_processors.auth (và đặc biệt là không bao gồm bộ vi xử lý request ngữ cảnh) có nghĩa là trong hầu hết các trường hợp, bạn sẽ đã có quyền truy cập vào {{ user }} mà không cần phải thêm nó vào bạn ngữ cảnh thông qua chế độ xem hoặc bật trình xử lý ngữ cảnh request để truy cập người dùng như trên qua {{ request.user }}

+0

không chỉ kiểm tra xem người dùng đã được xác thực chưa? Tôi cần phải biết nếu họ là một siêu người dùng – JohnnyCash

+1

tôi tự hỏi nếu is_superuser sẽ làm các trick .. – JohnnyCash

+0

xin lỗi, đưa sai một lên - Tôi đã thay đổi nó bây giờ –

3

Như đã thảo luận trong nhận xét, bạn có thể sử dụng đối tượng User có sẵn trong các mẫu tự động:

{% if user.is_superuser %} 
<div class="alert alert-success" role="alert"> 
You are logged in as {{user.first_name}}, here are the 
<a href="/admin/">admin pages</a> for changing content. 
</div> 
{% endif %} 

Bạn cũng có thể sử dụng user.is_staff có thể phù hợp hơn.