اذهب إلى المحتوى

السؤال

نشر

في الموقع الخاص بي، يقوم المستخدم بتسجيل حساب جديد في صفحة registration ، وبعد ذلك يجب أن يذهب إلى صفحة تسجيل الدخول بنفسه ويكتب بياناته مرة أخرى يدويًا لكي يقوم بتسجيل الدخول.

هل توجد طريقة تجعل المستخدم يسجل دخول تلقائيًا في الموقع بعد إتمام عملية التسجيل مباشرة بدون أن يتضطر المستخدم من كتابة بياناته مرة أخرى؟

Recommended Posts

  • 1
نشر

مرحبا Mohssen تعتمد إجابة السؤال على طريقة عمل الموقع الخاص بك في حال كنت تستخدم طريقة Templet فالطريقة الأمثل هي استخدام الدوال ()authenticate() and login يمكنك الوصول للمزيد من المعلومات عن الدالتين بالضعط عليهما: 

حيث ستقوم بإستدعاء كل من هاتين الدالتين من مكتبة auth  الخاصة ب Django في ملفات views
في هذه الحالة سيتم تحويل المستخدم مباشرة لصفحة الرئيسية.
هذا الكود مثال على ذالك في دالة تسجيل حساب جديد في views

from django.contrib.auth import authenticate, login

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            messages.info(request, "Thanks for registering. You are now logged in.")
            new_user = authenticate(username=form.cleaned_data['username'],
                                    password=form.cleaned_data['password1'],
                                    )
            login(request, new_user)
            return HttpResponseRedirect("/dashboard/")

طبعاً ['username'] و ['password1']هم البيانات القادمة من الفورم التسجيل.
و السطر التالي login(request, new_user) سيقوم بعملية التسجيل و بعدها ستقوم الدالة def register(request):
بتحويل المستخدم لصفحة التي تريد المستخدم الذهاب لها فور تسجيله الحساب أول مرة.
لكن في حالة كنت تتعامل مع API فالموضوع له منحنى اخر لطريقة التعامل مع هذا الموضوع لكن اتوقع انك تتكلم عن طريقة Templet
ان شاء الله كان الشرح وافياً و مفهوماً. في حال كان لديك استفسار اخر سأكون سعيد بسماع ردك.
تحياتي.

  • 0
نشر

اهلاً،

في دالة ال view التي تقوم بتسجيل مستخدم جديد بعد التأكد من إضافة المستخدم بالبيانات المدخلة من ال form تذكر انه بعد عملية تسجيل المستخدم واضافة البيانات أضف هذا الكود:

from django.contrib.auth import authenticate
auth_user = authenticate(username=request. POST['username'], password=request. POST['password'])

بعد عملية تسجيل مستخدم جديد فإن دالة authenticate داخل ال Django  تعطي لها اسم المستخدم وكلمة المرور وهي تقوم بفحص اذا كان المستخدم موجود داخل النظام ام لا فترجع لنا object of user تم حفظه في حالتنا داخل المتغير auth_user.

ومن ثم نفحص هل المستخدم موجود إذا كان موجود صرح له بتسجيل دخول للنظام باستخدام دالة login ومن ثم انقله لصفحة ال home او اي صفحة تريدها بوضع URL الصفحة مباشرة باستخدام دالة redirect دون جهد منه لقد أصبح مستخدم في النظام ومسجل دخوله لنرى ذلك في الكود لنضيف هذا الكود على الكود السابق:

from django.contrib.auth import authenticate
from django.contrib.auth import login
from django.shortcuts import redirect
auth_user = authenticate(username=request. POST['username'], password=request. POST['password'])
If auth_user:
      login(request, auth_user)
      return redirect('/url/home/')

 الذي تم توضيحه اعلاه تمت عملية تسجيل الدخول من داخل دالة تسجيل مستخدم جديد دون ان يطر للذهاب لصفحة تسجيل الدخول ولقد تم تحويله مباشرة للصفحة الرئيسية بإستخدام دالة redirect وهذا اجابة لسؤالك

اقتباس

هل توجد طريقة تجعل المستخدم يسجل دخول تلقائيًا في الموقع بعد إتمام عملية التسجيل مباشرة بدون أن يتضطر المستخدم من كتابة بياناته مرة أخرى؟

 اتمنى ان تكون قد وضحت لك الطريقة تحياتي .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...