2015-07-01 2 views
0

Я пытаюсь создать перенаправление при входе пользователя в систему. Например, когда пользователь пытается получить доступ к ссылке для создания сообщения в блоге, ему предлагается войти в систему и после того, как он войдет в систему он перенаправляется на страницу, чтобы создать сообщение. Я извлекаю следующий параметр из url.Не удалось перенаправить на просмотр после входа в систему

blog.urls

from django.conf.urls import url 
from blog import views 

urlpatterns=[ 

    url(r'^$',views.index,name="index"), 
    url(r'^signup/$',views.signup_view,name="signup_view"), 
    url(r'^login/$',views.login_view,name="login_view"), 
    url(r'^create-post/$',views.create_blog,name="create_post"), 
    url(r'^logout/$',views.logout_view,name="logout_view"),  
] 

blog.views:

def login_view(request): 

    if request.method == 'POST': 
     form=LoginForm(request.POST) 
     if form.is_valid(): 
      username=form.cleaned_data['username'] 
      password=form.cleaned_data['password'] 

      user=authenticate(username=username,password=password) 
      if user is not None: 
       if user.is_active: 
        login(request,user) 
        go_to=request.GET.get('next','/') 
        print go_to 
        return HttpResponseRedirect(go_to) 
       else: 
        return HttpResponse("Not active") 
      else: 
       return HttpResponse("User doesn't exist") 

    else: 
     form=LoginForm() 
    return render(request,'blog/login.html',{'form':form}) 

и блог/login.html

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title>Login</title> 
</head> 
<body> 
     <form method="POST" action="/login/"> 
      {% csrf_token %} 
      <table> 
       {{form.as_table}} 
      </table> 
      <button type="submit">Submit</button> 
     </form> 
</body> 
</html> 

Всякий раз, когда я войти в систему он показывает следующий параметр как '/' а в URL-адресе есть «next =/create-blog /». Пожалуйста, предложите любое решение.

+2

Вопрос: почему вы не используете вид входа Джанго? Он делает именно это, плюс он делает некоторые проверки, которые вы забыли, что может поставить пользователя под угрозу. – spectras

+0

Вы могли бы просто сделать это: 'return redirect ('/ path/to/redirect/to')'. Импорт для 'redirect' будет' с django.shortcuts import redirect'. –

ответ

0

вам нужно:

action="/login/{% if request.GET.next %}?next={{ request.GET.next }}{% endif %}" 
+0

Спасибо. Он отлично работал. – dealerkam

Смежные вопросы