了解HttpResponseRedirect

时间:2014-12-11 19:28:52

标签: django

我是Django的新手,并试图建立一个小项目;目前正在尝试了解HttpResponseRedirect,但在这种情况下无效。

这是我的views.py

def user_login(request):
if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user:
        if user.is_active:
            login(request, user)
            #return index(request)
            HttpResponseRedirect('/main/')
else:
    render(request, 'main/login.html',{})   

这里是主应用中的urls.py

urlpatterns = patterns('',
        url(r'^$', views.index, name = 'index'),
        # .....................
        url(r'^login/$', views.user_login, name='login'),
        url(r'^logout/$', views.user_logout, name='logout'),
        )

和这里的login.html

        <form id="login_form" method="post" action="/main/login/">
        {% csrf_token %}
        Username: <input type="text" name="username" value="" size="50" /><br />
        Password: <input type="password" name="password" value="" size="50" /><br />
        <input type="submit" value="submit" />

如果我在login()之后返回index()视图,一切正常,但是当我使用HttpResponseRedirect时,它只是不起作用,它会成功登录但保留在登录页面上。即使我把HttpResponseRedirect(&#39; / asdf /&#39;)放在那里,也不会抛出错误,因为url中没有asdf路由。那么,有两个问题,1)为什么重定向不起作用? 2)为什么它甚至没有抛出错误?

干杯!

2 个答案:

答案 0 :(得分:3)

你正在'创建'一个HttpResponseRedirect但是没有返回它。尝试:

return HttpResponseRedirect('/main/')

答案 1 :(得分:1)

return HttpResponseRedirect('/main/')

您需要返回回复...希望这会有所帮助...