如何重定向到带参数的视图?
我正在尝试按照Django中重定向的说明进行操作。我想先重定向到一个页面,然后再重定向回去。以下是我的代码:
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 / 反向查找 'update_session_from_ldap' 时出现问题,参数 '()' 和关键字参数 '{'next': 'home'}' 找不到。
我哪里做错了呢?
2 个回答
2
你在视图中的做法是对的,只是网址里缺少了一个叫 next
的参数:
url(r'^/ldap/(?P<next>\w+)/$',
'library.views.update_session_from_ldap',
name="ldap")
不过我注意到你在 update_session_from_ldap
里没有使用 next
这个参数。如果你想一直跳转到“首页”,而不管 next
的话,就把它从视图里去掉,保持你原来的 url
不变。
1
除了manji提到的内容,你还需要使用完整的URL名称,或者完整的函数引用。你不能只用函数引用的最后一部分。
所以,你可以选择:
return redirect('library.views.update_session_from_ldap', next='home')
或者
return redirect('ldap', next='home')