मैं कैसे जांचूं कि यह उपयोगकर्ता अनाम है या वास्तव में मेरे सिस्टम का उपयोगकर्ता है?


84
def index(request):
    the_user = request.user

Django में, मुझे कैसे पता चलेगा कि यह वास्तविक उपयोगकर्ता है या नहीं? मैंने कोशिश की:

if the_user: लेकिन "अनाम" अगर कोई लॉग इन नहीं करता है, तो भी, यह हमेशा सही रहता है और यह काम नहीं करता है।

जवाबों:


140

आप request.user.is_anonymousरिटर्न की जांच कर सकते हैं True


21
इस बात का ध्यान रखें कि views.pyआप request.user.is_anonymous()इसे एक फ़ंक्शन के बाद से उपयोग करें , जबकि टेम्प्लेट में आपको उपयोग करना चाहिए{{user.is_anonymous}}
amigcamel

12
Django 1.9 में ऐसा लगता है बल्कि यह है is_authenticated(): कृपया डॉक्स। Jangoproject.com/en/1.9/topics/auth/default/…
Paolo Stefan

13
Django 1.10 से, is_anonymous अब एक विधि नहीं है (सिर्फ एक संपत्ति है)
maxbellec

2
मुझे पाओलो स्टीफन के साथ सहमत होना चाहिए, जिस विधि का आप उपयोग करना चाहते हैं is_authenticated()Thegarywilson.com/blog/2006/is_authenticated-vs-is_an बेनाम
अल स्वेगार्ट

3
वर्तमान अनुशंसा का उपयोग करना है request.user.is_authenticated, जो कि Django 1.10+ में एक विशेषता है, is_anonymousअब जैसा है - docs.djangoproject.com/en/dev/ref/contrib/auth/… देखें । ध्यान दें कि यदि आप Django के अभिभावक का उपयोग कर रहे हैं, तो ये विशेषताएँ वह नहीं करेंगी जो आप सोचते हैं कि वे करेंगे - django-guardian.readthedocs.io/en/stable/configuration.html
rhunwicks

18

के लिए एक विकल्प

if user.is_anonymous():
    # user is anon user

यह देखने के लिए कि उपयोगकर्ता वस्तु की आईडी क्या है:

if user.id == None:
    # user is anon user
else:
    # user is a real user

देख https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users


4
एक बुरा विचार है। user.is_anonymous () नए संस्करणों में काम करता रहेगा, user.id भविष्य के कार्यान्वयन के आधार पर नहीं हो सकता है
12

यह भी ध्यान रखें कि यदि आप Django के अभिभावक का उपयोग कर रहे हैं तो अनाम उपयोगकर्ता के पास भी एक आईडी होगी - django-guardian.readthedocs.io/en/stable/… देखें ।
रुन्निक्स at

और docs.djangoproject.com/en/dev/ref/contrib/auth/… के अनुसार वर्तमान अनुशंसा उपयोगकर्ता का उपयोग करने के लिए है ।is_authenticated
rhunwicks

यह दुर्भाग्य से काम नहीं करता है। यह पहली चीज थी जो मैंने कोशिश की थी। लगता है कि "अनाम" उपयोगकर्ता उपयोगकर्ता का उपयोग करते समय दिखाता है == कोई नहीं (और अन्य विविधताएं)।
हरलीन

4

मुझे पता है कि मैं यहां थोड़ी सी खुदाई कर रहा हूं, लेकिन एक Google खोज ने मुझे इस पृष्ठ पर ला दिया।

यदि आपके दृश्य में यह आवश्यक है कि उपयोगकर्ता लॉग इन है, तो आप @login_required डेकोरेटर को लागू कर सकते हैं:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):

यह कुछ कस्टमाइज़ किए बिना स्टॉक "लॉगिन" दृश्य में काम नहीं करेगा।
हरलीन

0

मेरे पास एक समान मुद्दा था सिवाय इसके कि एक पृष्ठ पर था कि login_redirect_url को भेजा गया था। मुझे खाके में डालना था:

{% if user.is_authenticated %}
    Welcome Back, {{ username }}
{% endif %}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.