Web2py - 自定义注册和登录表单合二为一
Web2py - Custom Registration & Login Form in One
我想允许用户从一个表单注册和登录。
表单只需要一个电子邮件地址和一个密码。如果用户输入不存在的电子邮件地址,我想使用提供的电子邮件地址和密码组合注册用户。否则,该表单将像标准登录表单一样运行。
型号(禁用first_name、last_name和密码验证):
auth.settings.register_verify_password = False
db.auth_user.first_name.writable = False
db.auth_user.last_name.writable = False
controller(不确定在这里做什么):
def index():
//maybe submit vars to login() first, then if user does not exist submit vars to register()????
return dict(form=auth.login(),form1=auth.register())
view.html(自定义格式):
<form method="POST">
<div class="form-group">
<input type="text" class="form-control" id="auth_user_email" name="email">
</div>
<div class="form-group">
<input type="password" class="form-control" id="auth_user_password" name="password">
</div>
<button type="submit">Go</button>
{{=form.custom.end}}
在 Web2py 中完成此任务的最佳方法是什么?
In your controller, auth.login_bare is the trick:
email, password = request.post_vars['email'], request.post_vars['password']
if not auth.login_bare(email, password):
db.auth_user.insert(
first_name=None,
last_name=None,
email=email,
password=db.auth_user.password.requires[0](password)[0]
)
auth.login_bare(email, password)
#redirect
注意,如果用户名和密码存在,auth.login_bare 将自动登录用户。如果组合不存在,那么我们手动将用户插入数据库。
仅供参考,您可能应该在将用户插入数据库之前验证电子邮件,但为简单起见,我将其省略。
In your view, a simple or custom form will do:
<form enctype="multipart/form-data"
action="{{=URL()}}" method="post"> <!--{{#or use =form.custom.begin}}-->
<div class="form-group">
<input type="text" class="form-control" name="email">
</div>
<div class="form-group">
<input type="password" class="form-control" name="password">
</div>
<button type="submit">
Submit
</button>
</form> <!--{{#or use =form.custom.end}}-->
我想允许用户从一个表单注册和登录。
表单只需要一个电子邮件地址和一个密码。如果用户输入不存在的电子邮件地址,我想使用提供的电子邮件地址和密码组合注册用户。否则,该表单将像标准登录表单一样运行。
型号(禁用first_name、last_name和密码验证):
auth.settings.register_verify_password = False
db.auth_user.first_name.writable = False
db.auth_user.last_name.writable = False
controller(不确定在这里做什么):
def index():
//maybe submit vars to login() first, then if user does not exist submit vars to register()????
return dict(form=auth.login(),form1=auth.register())
view.html(自定义格式):
<form method="POST">
<div class="form-group">
<input type="text" class="form-control" id="auth_user_email" name="email">
</div>
<div class="form-group">
<input type="password" class="form-control" id="auth_user_password" name="password">
</div>
<button type="submit">Go</button>
{{=form.custom.end}}
在 Web2py 中完成此任务的最佳方法是什么?
In your controller, auth.login_bare is the trick:
email, password = request.post_vars['email'], request.post_vars['password']
if not auth.login_bare(email, password):
db.auth_user.insert(
first_name=None,
last_name=None,
email=email,
password=db.auth_user.password.requires[0](password)[0]
)
auth.login_bare(email, password)
#redirect
注意,如果用户名和密码存在,auth.login_bare 将自动登录用户。如果组合不存在,那么我们手动将用户插入数据库。
仅供参考,您可能应该在将用户插入数据库之前验证电子邮件,但为简单起见,我将其省略。
In your view, a simple or custom form will do:
<form enctype="multipart/form-data"
action="{{=URL()}}" method="post"> <!--{{#or use =form.custom.begin}}-->
<div class="form-group">
<input type="text" class="form-control" name="email">
</div>
<div class="form-group">
<input type="password" class="form-control" name="password">
</div>
<button type="submit">
Submit
</button>
</form> <!--{{#or use =form.custom.end}}-->