我正在尝试使用 Django 中的管理员登录机制,并重定向到请求的页面,我得到一个 404,因为它试图重定向到发布的 url,而不是下一个参数表示的 url。我显然不明白什么,因为当我单步执行 contrib.auth.login 视图时,它根本没有解析下一个参数。例如,我有以下视图(网站的主页)
@login_required(login_url='/sdc/admin/login')
def cb_index(request):
#snip
return render_to_response('chargeback_base.html', variables)
因此,当我输入 cb_index 视图的 URL /sdc/chargeback/ 时,它会正确重定向到登录页面,下一个变量设置为 /sdc/chargeback/,如下所示。
http://localhost:8000/sdc/admin/login/?next=/sdc/chargeback/
但是,来自 contrib.auth.views 的默认登录视图使用完整的 url 作为 redirect_to 而不是下一个参数,所以我总是得到 404 而不是被重定向到下一个 url。我可以通过添加来修复它
redirect_to = request.GET.get('next','')
到视图的 POST 部分,但我认为这应该是内置的功能,但它不起作用。更重要的是,由于这是对基本视图的编辑,我必须记住每次更新时都要修复这个问题,我不想这样做。我不明白什么?
编辑:登录网址遵循管理网站网址
url(r'^sdc/admin/', include(admin.site.urls)),
登录模板是管理站点中包含的登录模板,没有更改。