Я пытаюсь создать перенаправление при входе пользователя в систему. Например, когда пользователь пытается получить доступ к ссылке для создания сообщения в блоге, ему предлагается войти в систему и после того, как он войдет в систему он перенаправляется на страницу, чтобы создать сообщение. Я извлекаю следующий параметр из 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 /». Пожалуйста, предложите любое решение.
Вопрос: почему вы не используете вид входа Джанго? Он делает именно это, плюс он делает некоторые проверки, которые вы забыли, что может поставить пользователя под угрозу. – spectras
Вы могли бы просто сделать это: 'return redirect ('/ path/to/redirect/to')'. Импорт для 'redirect' будет' с django.shortcuts import redirect'. –