2013-02-11 38 views
11

मैं वर्तमान उपयोगकर्ता को django टेम्पलेट टैग में कैसे प्राप्त कर सकता हूं? (अनुरोध वस्तु सुलभ नहीं है) या मैं अनुरोध ऑब्जेक्ट तक कैसे पहुंच सकता हूं?टेम्पलेट टैग में वर्तमान उपयोगकर्ता कैसे प्राप्त करें?

+0

आप टेम्पलेट टैग बनाने से संदर्भ प्रोसेसर के रूप में यह बना सकते हैं और एक टेम्पलेट में हमेशा से यह कह सकते हैं। संदर्भ प्रोसेसर में आप हमेशा टेम्पलेट में फ़ंक्शन को कॉल किए बिना उपयोगकर्ता प्राप्त कर सकते हैं। – catherine

+0

एक लाइनर टेम्पलेट टैग के लिए वास्तव में जटिल .. वास्तव में django इतनी अनजाने में है? – tapioco123

+2

या इसे अपने टेम्पलेट {{user.username}} – catherine

उत्तर

11

आप किसी टेम्पलेट टैग में वर्तमान उपयोगकर्ता उपयोग करना चाहते हैं, तो आप यह एक पैरामीटर के रूप टेम्पलेट्स में, गुजरना होगा तो जैसे:

{% my_template_tag user %} 

तो सुनिश्चित करें कि आपके टेम्पलेट टैग इस की अनुमति है अतिरिक्त पैरामीटर इस विषय पर documentation देखें। आपको simple tags भी देखना चाहिए।

9

उपयोगकर्ता हर बार अनुरोध से जुड़ा हुआ है, अपने टेम्पलेट में आप कर सकते हैं निम्नलिखित:

{% if user.is_authenticated %} 
{% endif %} 

आप अपनी सामग्री का उपयोग करने के लिए "अनुरोध" निर्दिष्ट करने की जरूरत नहीं है

अद्यतन:

प्रति सचेत रहें: is_authenticated() हमेशा लॉग इन उपयोगकर्ता (User वस्तुओं) के लिए True लौटने के लिए, लेकिनके लिए False रिटर्न 10 (अतिथि उपयोगकर्ता)। यहां पढ़ें: https://docs.djangoproject.com/en/1.7/ref/contrib/auth/

+4

यह विषय – tapioco123

+0

'user.is_authenticated' हमेशा सत्य लौटाता है, इसलिए यह मूल रूप से बेकार है। –

+0

नहीं! यह हमेशा उपयोगकर्ता (लॉग इन) के लिए सच हो जाता है, लेकिन बेनामी यूज़र के लिए झूठा रिटर्न देता है, इसलिए बेकार नहीं है! यहां सावधानी से पढ़ें: https://docs.djangoproject.com/en/1.7/ref/contrib/auth/ – daveoncode

0

यह सवाल पहले से ही answered here था:

{% ifuser.is_authenticated %} 
    Welcome 
'{{ user.username }}' 
    {% else %} 
    <a href="{% url django.contrib.auth.login %}">Login</a> 
{% endif %} 

और सुनिश्चित करें कि आप अनुरोध टेम्पलेट संदर्भ प्रोसेसर अपने settings.py में इंस्टॉल किया हुआ है:

TEMPLATE_CONTEXT_PROCESSORS = (
... 
'django.core.context_processors.request', 
... 
) 

नोट:

  • उपयोग request.user.get_username() विचारों में & user.get_username 01 मेंटेम्पलेट्स। उपयोगकर्ता नाम विशेषता को संदर्भित करने पर पसंदीदा। अगर एक RequestContext प्रयोग किया जाता है Source
  • इस टेम्पलेट संदर्भ चर उपलब्ध है।
  • django.contrib.auth.context_processors.auth डिफ़ॉल्ट & रूप से सक्षम है चर उपयोगकर्ता
  • आप टेम्पलेट संदर्भ प्रोसेसर django.core.context_processors.request सक्षम करने की आवश्यकता नहीं देते हैं।

स्रोत: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates