الانتشار؟ التالي = في تسجيل Django
-
02-10-2019 - |
سؤال
لديّ طريقة عرض يحتوي على @ @legin_required وعند سحب الصفحة ، إذا لم يتم تسجيل الدخول إليها ، فهل يرسلك إلى نموذج تسجيل الدخول باستخدام الصحيح؟ التالي =/url/you/to/to/see
مشكلتي هي كيفية نقل هذا؟ القيمة التالية إلى النماذج اللاحقة والبريد الإلكتروني للتنشيط بحيث عندما يكمل المستخدم عملية التنشيط ، يتم إعادة توجيههم إلى العرض الذي حاولوا الوصول إليه في الأصل.
إن بيثونفو وجانغوفو ضعيف ، لذا يرجى الاحتفاظ بالإجابة على شيء يمكن أن يتبعه طفل يبلغ من العمر 5 سنوات ؛)
شكرا كل شيء في المتقدم.
المحلول
إنه أمر سهل ، ما عليك سوى حفظ عنوان URL واكتب الواجهة الخلفية الخاصة بك تجاوز 2 طريقتين.
الحسابات/النماذج
class UserNext(models.Model):
user = models.OneToOneField(User)
url = models.CharField(max_length=255, blank=True, null=True)
الحسابات/nextbackend.py:
from registration.backends.default import DefaultBackend
from django.core.urlresolvers import resolve
from accounts.models import UserNext
class NextBackend(DefaultBackend):
def register(self, request, **kwargs):
username, email, password = kwargs['username'], kwargs['email'], kwargs['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = RegistrationProfile.objects.create_inactive_user(username, email,
password, site)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
next, created = UserNext.objects.get_or_create(user=new_user)
next.url = request.GET.get('next',None) # or POST, don't know how you want to pass it
next.save()
return new_user
def post_activation_redirect(self, request, user):
next = UserNext.objects.get(user=user)
view, args, kwargs = resolve(next.url)
return (view, args, kwargs)
المستخدم هذا^ الواجهة الخلفية كواجهة التسجيل الخاصة بك في الحسابات/views.py:
def custom_register(request):
return register(request, backend='accounts.nextbackend.NextBackend',)
urls.py:
url(r'^accounts/register/$', 'accounts.views.custom_register', name='registration_register'),
يجب أن تعمل ، لم يختبرها ، مكتوبة أثناء الطيران. من الواضح أنه سيحتاج إلى إضافة بعض الواردات.
نصائح أخرى
بنيت في عرض معالجة هذا بشكل افتراضي. تأكد من أن لديك قطعة رمز: <input type="hidden" name="next" value="{{ next }}" />
في قالب صفحة تسجيل الدخول الخاصة بك.