2

我试图在登录后(默认/索引)将用户重定向到另一个页面(默认/新闻),但无论我尝试了多少,我都无法完成它。我正在使用导航栏中的登录名。

我已将此行添加到 db.py

auth.settings.login_next=URL(r=request, c='default', f='news')

默认控制器中的所有内容都与它包含的相同

def news():
  message = "Welcome to News!" 
  return locals()

我也试过这个

auth.settings.login_next=URL('news')

这也不起作用。请帮忙。

编辑: 搜索了几天后,我在这里找到了答案这就是你的做法。

#In layout.html change 
<ul id="navbar" class="nav pull-right">{{='auth' in globals() and auth.navbar(mode="dropdown") or ''}}</ul>
# to
<ul id="navbar" class="nav pull-right">{{='auth' in globals() and auth.navbar(mode="dropdown",referrer_actions=None) or ''}}</ul>

再次更改 db.py

#In db.py add these lines:
auth.settings.login_next = URL('news')

这对我有用。

4

3 回答 3

2

如果登录 URL 中已经没有引荐来源网址(引荐来源网址在“_next”查询字符串变量中),则该auth.settings.login_nextURL 只是一个默认值。导航栏自动在 auth 操作链接中包含引荐来源网址(设置为当前页面的 URL)——要覆盖它,您可以显式指定referrer_actions参数并排除不应设置引荐来源网址的操作:

{{=auth.navbar(..., referrer_actions=['register', ...])}}
于 2013-09-19T21:03:07.973 回答
1

现在是 2016 年 4 月,虽然最初的问题仍然高度相关,但似乎 web2py 已经改变,上面对 layout.html 建议的修改不再相关。标准 layout.html 中没有对“auth.navbar”的引用。

好消息是,只需将上述 python 代码包含在 default.py 控制器中,它就可以工作了。注意,我把它放在“用户”函数中,我不确定这是否是最好的放置位置,因为大多数评论只是说把它放在“控制器”中,而不指定函数。

def user():
    auth.settings.login_next = URL('default','dashboard')
    return dict(form=auth())
于 2016-04-24T01:00:14.083 回答
0

通过将以下代码放在我的产品信息页面中,我能够在登录/注册后重定向到用户的主页。

这样,当他们被重定向回欢迎产品信息页面时,我会检查他们是否来自登录或注册,并将他们引导到他们应该去的地方。

我很想找到使用 auth.settings.login_next 的方法

#

定义信息():

# If just signed up or just logged in, go to the user's home page and not
# back to this product landing page that referred them
if auth.is_logged_in():

    if  '/default/user/login?_next=/fnd/home/info' in request.env.http_referer:
        redirect( URL( 'user', 'show_campaigns') )

    if  '/default/user/register?_next=/fnd/home/info' in request.env.http_referer:
        redirect( URL( 'user', 'show_campaigns') )


return dict()
于 2016-11-04T22:29:31.543 回答