如何使用参数重定向到视图?

时间:2011-04-04 17:55:58

标签: python django

我正在尝试在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'}'找不到。

我做错了什么?

2 个答案:

答案 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')