我是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)为什么它甚至没有抛出错误?
干杯!
答案 0 :(得分:3)
你正在'创建'一个HttpResponseRedirect但是没有返回它。尝试:
return HttpResponseRedirect('/main/')
答案 1 :(得分:1)
return HttpResponseRedirect('/main/')
您需要返回回复...希望这会有所帮助...