“Python Flask: 实现用户注册功能”的版本间的差异
来自CloudWiki
第5行: | 第5行: | ||
<nowiki> | <nowiki> | ||
+ | app = Flask(__name__) # 创建应用 | ||
+ | |||
+ | # 用户注册 | ||
+ | @app.route('/register', methods=['GET', 'POST']) | ||
+ | def register(): | ||
+ | form = RegisterForm(request.form) # 实例化表单类 | ||
+ | if request.method == 'POST' and form.validate(): # 如果提交表单,并字段验证通过 | ||
+ | # 获取字段内容 | ||
+ | email = form.email.data | ||
+ | username = form.username.data | ||
+ | password = sha256_crypt.encrypt(str(form.password.data)) # 对密码进行加密 | ||
+ | |||
+ | db = MysqlUtil() # 实例化数据库操作类 | ||
+ | sql = "INSERT INTO users(email,username,password) \ | ||
+ | VALUES ('%s', '%s', '%s')" % (email,username,password) # user表中插入记录 | ||
+ | db.insert(sql) | ||
+ | |||
+ | flash('您已注册成功,请先登录', 'success') # 闪存信息 | ||
+ | return redirect(url_for('login')) # 跳转到登录页面 | ||
+ | |||
+ | return render_template('register.html', form=form) # 渲染模板板 | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | ==创建模板文件== | ||
+ | render_template()函数默认查找的模板文件路径"/templates", | ||
+ | |||
+ | 在该路径下创建register.html | ||
+ | |||
+ | <nowiki> | ||
+ | {% extends 'layout.html' %} | ||
+ | |||
+ | {% block body %} | ||
+ | <div class="content"> | ||
+ | <h1 class="title-center">用户注册</h1> | ||
+ | {% from "includes/_formhelpers.html" import render_field %} | ||
+ | <form method="POST" action=""> | ||
+ | <div class="form-group"> | ||
+ | {{render_field(form.email, class_="form-control")}} | ||
+ | </div> | ||
+ | <div class="form-group"> | ||
+ | {{render_field(form.username, class_="form-control")}} | ||
+ | </div> | ||
+ | <div class="form-group"> | ||
+ | {{render_field(form.password, class_="form-control")}} | ||
+ | </div> | ||
+ | <div class="form-group"> | ||
+ | {{render_field(form.confirm, class_="form-control")}} | ||
+ | </div> | ||
+ | <p><input type="submit" class="btn btn-primary" value="注册"></p> | ||
+ | </form> | ||
+ | </div> | ||
+ | {% endblock %}</nowiki> |
2022年1月16日 (日) 02:06的版本
创建注册路由
在manage.py入口文件中,创建一个名为app的Flask实例,
然后用app.route()函数创建路由。
app = Flask(__name__) # 创建应用 # 用户注册 @app.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm(request.form) # 实例化表单类 if request.method == 'POST' and form.validate(): # 如果提交表单,并字段验证通过 # 获取字段内容 email = form.email.data username = form.username.data password = sha256_crypt.encrypt(str(form.password.data)) # 对密码进行加密 db = MysqlUtil() # 实例化数据库操作类 sql = "INSERT INTO users(email,username,password) \ VALUES ('%s', '%s', '%s')" % (email,username,password) # user表中插入记录 db.insert(sql) flash('您已注册成功,请先登录', 'success') # 闪存信息 return redirect(url_for('login')) # 跳转到登录页面 return render_template('register.html', form=form) # 渲染模板板
创建模板文件
render_template()函数默认查找的模板文件路径"/templates",
在该路径下创建register.html
{% extends 'layout.html' %} {% block body %} <div class="content"> <h1 class="title-center">用户注册</h1> {% from "includes/_formhelpers.html" import render_field %} <form method="POST" action=""> <div class="form-group"> {{render_field(form.email, class_="form-control")}} </div> <div class="form-group"> {{render_field(form.username, class_="form-control")}} </div> <div class="form-group"> {{render_field(form.password, class_="form-control")}} </div> <div class="form-group"> {{render_field(form.confirm, class_="form-control")}} </div> <p><input type="submit" class="btn btn-primary" value="注册"></p> </form> </div> {% endblock %}