登录后无法重定向到查看

时间:2015-07-01 04:15:38

标签: python django

我正在尝试在用户登录时创建重定向。例如,当用户尝试访问链接以创建博客帖子时,系统会提示他登录,并且在他登录后,他会被重定向到要创建的页面这篇文章。我从网址中提取下一个参数。

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 /”。请提出任何解决方案。

2 个答案:

答案 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 }}