2017-02-22 10 views
0

Я должен реализовать Вход в django, но логин может быть выполнен во время покупки продукта, при создании комментария и т. Д. Здесь я перенаправляю пользователя на страницу индекса после входа в систему. Но я должен заставить пользователя оставаться на той же странице, с которой (заказ, рейтинг) он заходит.Логин пользователя django, после успешного входа в систему, остался на той же странице

Как я могу это сделать?

Вот что я реализовал:

def login_view(request): 
    if request.method=='POST': 
     form=UserLoginForm(request.POST or None) 
     if form.is_valid(): 
      email = form.cleaned_data["email"] 
      password = form.cleaned_data["password"] 
      try: 
       user = Customer.objects.get(email=email) 
       if user.check_password(password) : 
        if user.is_active and user.is_customer: 
         if user.mobile_verified : 
          user = authenticate(username=user.email, password=password) 
          login(request, user) 
          if request.POST.get('card_data'): 
           for items in request.POST.get('card_data').split(","): 
            cart = Cart(user=user, product_id=items) 
            cart.save() 
           total_cart = user.card_user.count() 
          else: 
           total_cart = 0 
          messages.success(request, "Login successfully.") 
          responss = redirect("Peru:home") 
          responss.delete_cookie('add_card_token') 
          return responss 
         else: 
          messages.success(request,"Mobile number is not verified") 
          return redirect("Peru:home") 
        else : 
         messages.info(request, "Your account may not be activated") 
         return redirect("Peru:home") 
       else: 
        messages.error(request,"Email or Password does not match") 
        return redirect("Peru:home") 
      except Exception as e: 
       messages.error(request, "User may not exists !") 
       return redirect("Peru:home") 
     else: 
      return redirect("Peru:home", forms=form) 
    else: 
     return redirect('Peru:home') 

ответ

1

Вам необходимо пройти следующий URL в шаблоне и вход в системе проверки зрения для следующего URL.

В шаблоне:

<a href="{% url 'login' %}?next={{request.path}}">Login</a> 

И login зрения:

from django.utils.http import is_safe_url 

def login(request): 
    redirect_to = request.POST.get('next', request.GET.get('next', '')) 
    # check form validity 
    # authenticate user 
    if redirect_to and is_safe_url(url=redirect_to, host=request.get_host()): 
     return redirect(redirect_to) 
    else: 
     return redirect('index')