سؤال

أنا أستخدم django.contrib.auth.views.login and .logout الآراء. في متناول يديك ، عملت خارج الصندوق ، سينشر مرة أخرى AAA+ إلخ.

تنشأ المشكلة لأنني لا أستخدم صفحة تسجيل دخول منفصلة ، ولكن لدي مربع تسجيل الدخول في كل صفحة (ما لم يتم تسجيل الدخول ، بالطبع). وهكذا ، عندما يكون تركيبة اسم المستخدم/كلمة المرور خاطئًا ، أحصل على خطأ. أي من هذه المسارات الثلاثة يجب أن أختار؟

  • هناك طريقة سرية لإعادة التوجيه إلى التالي ليس فقط على النجاح ولكن أيضًا على الخطأ. إذا كان الأمر كذلك، من فضلك قل لي!
  • أكتب عرض تسجيل الدخول الخاص بي ، وأستخدم نظام رسائل Django في الوقت نفسه
  • أكتب صفحة تسجيل دخول (حسنًا ، إنها فقط في عداد المفقودين قالبًا) حتى أتمكن من استغلال الذهول الكامل لنظام Django Auth.
هل كانت مفيدة؟

المحلول

أحد الحلول الممكنة (الخيارات الأولى + الثالثة في قائمتك):

  1. يجب عليك تقديم صفحة تسجيل دخول خاصة (أي تحديد registration/login.html) وللحصول على تسجيل الدخول في المستخدم ، تحتوي كل صفحة عادية على نموذج تسجيل الدخول ؛
  2. إذا كانت تسجيل الدخول إلى المستخدم بشكل طبيعي (تم التعامل مع هذا المنطق django.contrib.auth.views.login):
    • للصفحة العادية: إعادة توجيه المستخدم إلى الصفحة من حيث قامت بتسجيل الدخول ؛
    • لصفحة تسجيل الدخول: إذا كان هناك next param ، إعادة التوجيه هناك ، وإعادة التوجيه إلى الصفحة الرئيسية ؛
  3. إذا فشل المستخدم في تسجيل الدخول: إعادة توجيه (أو إعادة رسم) صفحة تسجيل الدخول مع الأخطاء المقدمة ؛
  4. إذا تم تسجيل الدخول إلى المستخدم: توفر الصفحة العادية رابطًا إلى تسجيل الدخول (لا تزال صفحة خاصة موجودة في حالة ما إذا كان المستخدم يريد إعادة تسجيل أو تسجيل الدخول من خلال حساب آخر).

في الصفحات العادية ، يجب أن يحتوي نموذج تسجيل الدخول على شيء من هذا القبيل <input type="hidden" name="next" value="{{ request.path }}" />.

في إعدادات المشروع:

# in settings.py
LOGIN_URL = '/login'     # this should coinside with url pattern of login view
LOGOUT_URL = '/logout'   # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page

NB: أنا لا أستخدم عرض Django's Buildin Logout بدلاً من ذلك ، فأنا أستخدمه: تقريبًا ولكنه لا يقوم بتسجيل الدخول فقط لطلبات النشر. هذا لا يسمح للمستخدمين بالتسجيل <img src='my_site/logout' /> رمز ضار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top