【问题标题】:Understaning HttpResponseRedirect了解 HttpResponseRedirect
【发布时间】:2015-02-10 09:49:18
【问题描述】:

我是 Django 新手,正在尝试构建一个小项目;目前正在尝试理解 HttpResponseRedirect,在这种情况下不起作用。

这是我的意见.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('/asdf/'),它仍然存在而不会抛出它应该的错误,因为 url 中没有 asdf 路由。那么,有两个问题,1)为什么重定向不起作用? 2)为什么它甚至没有抛出错误?

干杯!

【问题讨论】:

  • 请不要更改整个问题。您可以编辑问题并表明它已解决

标签: django


【解决方案1】:

您正在“创建”一个 HttpResponseRedirect 但不返回它。试试:

return HttpResponseRedirect('/main/')

【讨论】:

    【解决方案2】:

    return HttpResponseRedirect('/main/')

    您需要返回响应...希望对您有所帮助...

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2010-11-30
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2015-07-03
      • 2014-01-07
      相关资源
      最近更新 更多