使用 web2py 时,为什么 url 在使用 auth 时自动更改
when using web2py ,why the url changed automatically when using auth
我在控制器文件中定义了一个函数(test.py)
代码是:
def user():
return dict(form=auth())
然后,当我访问http://localhost:8000/demo/test/user
为什么url自动变成了http://localhost:8000/demo/default/user/login?
当您通过 auth()
调用 Auth
对象时,它会检查 URL 参数(即 URL 在控制器和函数之后的部分)以确定请求的身份验证方法(例如,登录、注册、个人资料等)。如果没有 URL arg(如您的情况),则它会重定向到与当前相同的 URL,但会附加 /login (否则,它不会 return 没有请求任何特定的 Auth 方法)。
如果您要使用上述构造(即,简单调用 auth()
的通用 user
函数),那么您应该创建包含特定 Auth 方法的 link作为第一个 URL 参数。如果出于某种原因你希望登录 link 成为 /user(没有任何 URL arg),你可以这样做:
def user():
if not request.args:
form = auth.login()
else:
form = auth()
return dict(form=form)
当没有 URL 参数时,这将显式 return 登录表单,否则会退回到标准行为。
您当然也可以对每个 Auth 方法进行完全独立的操作:
def login():
return dict(form=auth.login())
def register():
return dict(form=auth.register())
etc.
我在控制器文件中定义了一个函数(test.py) 代码是:
def user():
return dict(form=auth())
然后,当我访问http://localhost:8000/demo/test/user 为什么url自动变成了http://localhost:8000/demo/default/user/login?
当您通过 auth()
调用 Auth
对象时,它会检查 URL 参数(即 URL 在控制器和函数之后的部分)以确定请求的身份验证方法(例如,登录、注册、个人资料等)。如果没有 URL arg(如您的情况),则它会重定向到与当前相同的 URL,但会附加 /login (否则,它不会 return 没有请求任何特定的 Auth 方法)。
如果您要使用上述构造(即,简单调用 auth()
的通用 user
函数),那么您应该创建包含特定 Auth 方法的 link作为第一个 URL 参数。如果出于某种原因你希望登录 link 成为 /user(没有任何 URL arg),你可以这样做:
def user():
if not request.args:
form = auth.login()
else:
form = auth()
return dict(form=form)
当没有 URL 参数时,这将显式 return 登录表单,否则会退回到标准行为。
您当然也可以对每个 Auth 方法进行完全独立的操作:
def login():
return dict(form=auth.login())
def register():
return dict(form=auth.register())
etc.