我正在尝试在用户登录时创建重定向。例如,当用户尝试访问链接以创建博客帖子时,系统会提示他登录,并且在他登录后,他会被重定向到要创建的页面这篇文章。我从网址中提取下一个参数。
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})
和blog / 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 /”。请提出任何解决方案。
答案 0 :(得分:0)
你需要:
action="/login/{% if request.GET.next %}?next={{ request.GET.next }}{% endif %}"
答案 1 :(得分:0)
如果{{ request.GET.next }}
的值包含参数,例如http://example.com/?var1=abc&var2=def
,然后使用网址编码{{ request.GET.net | urlencode }}
。