জাজানোতে বর্তমানে ব্যবহারকারীর ব্যবহারকারীর আইডি লগইন করবেন কীভাবে?


124

কীভাবে বর্তমানে লগ-ইন করা ব্যবহারকারীর আইডি পাবেন?

ইন models.py:

class Game(models.model):
    name = models.CharField(max_length=255)
    owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')

ইন views.py:

gta = Game.objects.create(name="gta", owner=?)


1
@CiroSantilli新疆改造中心法轮功六四事件ডুপ্লিকেট সঠিক
Tessaracter

উত্তর:


209

প্রথমে নিশ্চিত হয়ে নিন যে আপনার সেটিংয়ে আপনার SessionMiddlewareএবং AuthenticationMiddlewareমিডলওয়্যারগুলি যুক্ত হয়েছে MIDDLEWARE_CLASSES

বর্তমান userরয়েছে requestবস্তু, আপনার দ্বারা এটা পেতে পারেন:

def sample_view(request):
    current_user = request.user
    print current_user.id

request.userআপনাকে Userবর্তমানে লগ-ইন করা ব্যবহারকারীকে উপস্থাপন করার জন্য একটি বস্তু দেবে । যদি কোনও ব্যবহারকারী বর্তমানে লগ ইন request.userনা করে থাকে তবে একটি উদাহরণে সেট করা হবে AnonymousUser। আপনি তাদের মাঠের সাথে আলাদা করে বলতে পারেন is_authenticated, যেমন:

if request.user.is_authenticated:
    # Do something for authenticated users.
else:
    # Do something for anonymous users.


3
আমরা যদি বর্তমানে কোনও মডেলটিতে বিদেশী কী ইউজারআইড সেট করতে চান যা বর্তমানে ব্যবহারকারীর আইডিতে লগইন হয়েছে?
কৃষ্ণদাস পিসি

আপনার আর সেটিংস আপডেট করার দরকার নেই। docs.djangoproject.com/en/1.11/topics/auth/default/…
কাঠের_মেটাল

2
অনুরোধ কোথা থেকে আসছে?
সেরেন

Userমডেল রেফারেন্সের লিঙ্ক ।
এক্স-ইয়ুরি



0

আমি এটি একটি অজ্যাক্স ভিউতে লিখেছি, তবে এটি বর্তমানে লগ ইন এবং লগ আউট ব্যবহারকারীর তালিকা দেওয়ার চেয়ে আরও বিস্তৃত উত্তর।

is_authenticatedঅ্যাট্রিবিউট সবসময় আয় Trueযেহেতু এটি শুধুমাত্র AnonymousUsers জন্য চেক, কিন্তু যে বেহুদা যদি আপনি যেখানে আপনি ব্যবহারকারীদের লগ ইন প্রয়োজন প্রদর্শিত একটি চ্যাট অ্যাপ্লিকেশন বিকাশ বলতে ছিল প্রমাণ করে আমার ব্যবহারকারীদের, যা আমি অনুমান বলে আশা করা হচ্ছে জন্য।

মেয়াদোত্তীর্ণ সেশনগুলির জন্য এটি পরীক্ষা করে এবং তারপরে ডিকোডযুক্ত _auth_user_idবৈশিষ্ট্যের ভিত্তিতে তারা কোন ব্যবহারকারীর সাথে সম্পর্কিত তা নির্ধারণ করে :

def ajax_find_logged_in_users(request, client_url):
    """
    Figure out which users are authenticated in the system or not.
    Is a logical way to check if a user has an expired session (i.e. they are not logged in)
    :param request:
    :param client_url:
    :return:
    """
    # query non-expired sessions
    sessions = Session.objects.filter(expire_date__gte=timezone.now())
    user_id_list = []
    # build list of user ids from query
    for session in sessions:
        data = session.get_decoded()
        # if the user is authenticated
        if data.get('_auth_user_id'):
            user_id_list.append(data.get('_auth_user_id'))

    # gather the logged in people from the list of pks
    logged_in_users = CustomUser.objects.filter(id__in=user_id_list)
    list_of_logged_in_users = [{user.id: user.get_name()} for user in logged_in_users]

    # Query all logged in staff users based on id list
    all_staff_users = CustomUser.objects.filter(is_resident=False, is_active=True, is_superuser=False)
    logged_out_users = list()
    # for some reason exclude() would not work correctly, so I did this the long way.
    for user in all_staff_users:
        if user not in logged_in_users:
            logged_out_users.append(user)
    list_of_logged_out_users = [{user.id: user.get_name()} for user in logged_out_users]

    # return the ajax response
    data = {
        'logged_in_users': list_of_logged_in_users,
        'logged_out_users': list_of_logged_out_users,
    }
    print(data)

    return HttpResponse(json.dumps(data))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.