3

我刚刚开始研究 web2py,该方法中的很多东西都是 nwe,例如使用视图的默认值等。我花了很多时间试图弄清楚如何让人们登录并最终放入

@auth.requires_login()

在控制器方法的开始。这神奇地显示了一个注册表单,之后新用户登录了。我不确定我是否完全了解幕后发生的事情,但一步一步来。

但是,我想提供一个注销按钮,但不知道如何实现。显然我需要以某种方式调用默认注销。所以我需要在提交表单/按钮中添加一个 url 并大概创建一个控制器来匹配 url,但是注销的方法会是什么样子?

在用户方法中是暴露语句,但不知道它们的含义或如何使用它们。所有这些点都让我感到困惑。

4

1 回答 1

4

我花了很多时间试图弄清楚如何让人们登录

你读过这本书的这一部分吗?它解释了@auth.requires_login()默认user()函数的使用和如何工作以公开登录功能(以及如何在需要时专门为登录创建单独的操作)。在脚手架应用程序中,default.py 控制器包含以下user()函数以公开所有 Auth 操作:

def user():
    return dict(form=auth())

在像“/myapp/default/user/[action]”这样的 URL 中,请求的 Auth 操作(即 URL 的最后一个元素)将在 request.args[0] 中可用。当上述函数调用auth()时,Auth__call__()方法会从 request.args[0] 中读取动作,然后调用相应的 Auth 方法。如果 URL 是“/myapp/default/user/login”,auth()最终将调用该auth.login()方法,该方法将返回(并处理)登录表单。auth.login()如果您想创建自己的自定义登录操作,也可以直接调用。

同样,URL“/myapp/default/user/logout”最终会调用该auth.logout()方法,该方法将注销用户。所以,如果你想启用注销,只需生成一个指向注销 URL 的链接——最好的方法是使用该URL()功能:

A('Logout', _href=URL('default', 'user', args='logout'))

请注意,在脚手架应用程序中,layout.html 视图用于auth.navbar()在页面的右上角插入 Auth 导航栏——当用户登录时,该导航栏会自动包含一个与上述类似的“注销”链接。

于 2012-06-10T14:22:52.443 回答