我正在尝试在Django中关注redirect的指导。我想重定向到一个页面,然后再次重定向。这是我的代码:
def home(request):
current_user = None
if 'user_id' in request.session.keys():
current_user = request.session['user_id']
else:
return redirect('update_session_from_ldap', next='home')
def update_session_from_ldap(request,next):
remote_user = request.META.get('REMOTE_USER', None)
request.session['user_id'] = remote_user
request.session.set_expiry(0) # Expire with browser session.
return redirect('home')
当我去主页时,我得到:
> NoReverseMatch at / Reverse for 'update_session_from_ldap'用 参数'()'和关键字参数 '{'next':'home'}'找不到。
我做错了什么?
答案 0 :(得分:2)
您在视图中执行的操作是正确的,只是网址中缺少参数next
:
url(r'^/ldap/(?P<next>\w+)/$',
'library.views.update_session_from_ldap',
name="ldap")
但我发现您没有使用next
中的update_session_from_ldap
参数。如果您希望始终重定向到“主页”并忽略next
,请将其从视图中移除并保留原始url
。
答案 1 :(得分:1)
除了manji所说的内容之外,您还需要使用URL的名称或完整的函数引用。您不能只使用函数引用的最后一部分。
所以,要么:
return redirect('library.views.update_session_from_ldap', next='home')
或
return redirect('ldap', next='home')