23

यह पहचानने के लिए कि आप लॉग इन उपयोगकर्ता सुपर उपयोगकर्ता हैं या नहीं, यह कैसे अपना टेम्पलेट/दृश्य प्राप्त करते हैं?Django: टेम्पलेट में छुपाएं बटन, यदि उपयोगकर्ता सुपर-उपयोगकर्ता नहीं है

मेरी रूपों पर कुछ बटन (टेम्पलेट में) है कि मैं पूरी तरह से छिपा चाहते हैं, तो उपयोगकर्ता एक सुपर उपयोगकर्ता

आपको लगता है कि करने के बारे में कैसे जाना होगा नहीं है?

उत्तर

57

User वस्तु पर बाहर is_superuser की जांच:

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

संपादित करें: के बाद @ मुस्तफा-0x टिप्पणी

ऊपर मानता है कि आपके django.core.context_processors.request अपने TEMPLATE_CONTEXT_PROCESSORS की स्थापना में शामिल है जो डिफ़ॉल्ट नहीं है।

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', 
) 

पहले से ही शामिल हैं django.contrib.auth.context_processors.auth (और विशेष रूप से request संदर्भ प्रोसेसर शामिल नहीं है) जिसका अर्थ है कि ज्यादातर मामलों में आप पहले से ही में जोड़ने के लिए आवश्यकता के बिना {{ user }} के लिए उपयोग होगा अपने दृश्य के माध्यम से संदर्भ, या जैसा कि ऊपर {{ request.user }}

+0

क्या यह जांचता है कि उपयोगकर्ता को प्रमाणित किया गया है या नहीं? मुझे यह जानने की ज़रूरत है कि क्या वे एक सुपर उपयोगकर्ता हैं – JohnnyCash

+1

मुझे आश्चर्य है कि if_superuser चाल करेगा .. – JohnnyCash

+0

क्षमा करें, गलत एक को ऊपर रखें - मैंने इसे अब बदल दिया है –

3

के रूप में टिप्पणी में चर्चा के माध्यम से उपयोगकर्ता का उपयोग करने के request संदर्भ प्रोसेसर सक्षम है, तो आप User वस्तु है कि उपयोग कर सकते हैं स्वचालित रूप से टेम्पलेट्स में उपलब्ध:

{% 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 %} 

तुम भी user.is_staff उपयोग कर सकते हैं और अधिक उपयुक्त हो सकता है।

संबंधित मुद्दे