使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
2016-05-09 11:01
1501 查看
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
/demo/modules/users/forms/register.py
1.引用上一步创建的 register.py 文件中的 RegisterForm 类
2.引入数据库访问类
3.增加 register 函数
4.增加 register.html 页面
在 /demo/modules/users/templates 目录创建 register.html 页面:
完成!现在可以通过 /user/register 来访问并注册新用户了
注意:在这里需要进行账号是否存在的验证,需要返回自定义信息,返回的办法是:
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
一、创建 Flask-WTF 验证类
创建 register.py 文件/demo/modules/users/forms/register.py
# config=utf-8 from flask_wtf import Form from wtforms import StringField, PasswordField from wtforms.validators import DataRequired class RegisterForm(Form): accountNumber = StringField('accountNumber', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) name = StringField('name', validators=[DataRequired()])
二、实现注册功能
/demo/modules/users/views.py1.引用上一步创建的 register.py 文件中的 RegisterForm 类
from demo.modules.users.forms.users import RegisterForm
2.引入数据库访问类
from demo.common import db
3.增加 register 函数
@loginRoute.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm() if request.method == 'POST': if not form.validate_on_submit(): return render_template('register.html', form=form) user = User.query.filter(User.accountNumber == form.accountNumber.data).first() if user: flash("账号已存在") return render_template('register.html', form=form) user = User() user.accountNumber = form.accountNumber.data user.password = md5(form.password.data) user.name = form.name.data db.session.add(user) db.session.commit() return render_template('login.html', form=form) return render_template('register.html', form=form)
4.增加 register.html 页面
在 /demo/modules/users/templates 目录创建 register.html 页面:
{% extends "base.html" %} {% block title %}注册新用户{% endblock %} {% block head %} <style type="text/css"></style> {% endblock %} {% block content %} <form action="{{ url_for('user.register') }}" method="post"> {% if form.errors or get_flashed_messages() %} <ul> {% for name, errors in form.errors.items() %} {% for error in errors %} <li>{{ error }}</li> {% endfor %} {% endfor %} {% for message in get_flashed_messages() %} <li>{{ message }}</li> {% endfor %} </ul> {% endif %} 账号:{{ form.accountNumber(size=20) }}<label>{{ form.accountNumber.errors[0] }}</label><br/> 密码:<input name="password" type="password"/><br/> 昵称:<input name="name" type="text"/><br/> {{ form.hidden_tag() }} <button type="submit">注册</button> </form> <a href="/">返回</a> {% endblock %}
完成!现在可以通过 /user/register 来访问并注册新用户了
注意:在这里需要进行账号是否存在的验证,需要返回自定义信息,返回的办法是:
# 视图函数需要调用 flash('your response message for user') # 前端页面调用 for message in get_flashed_messages() 就可以输出反馈信息
相关文章推荐
- 在网页中创建自己的调试控制台
- ClassLoader 详解及用途
- 普元_js_取值
- train _cascade 源码阅读之HOG特征
- 随笔:用心良苦 - 理解 jQuery 的构造函数
- virtio后端方案vhost
- 微信分享操作JSSDK
- 【剑指offer】旋转数组的最小值
- linux下在命令行中用默认程序打开特定文件如.mp3 .jpg 甚至是网页也可以
- Intellj Maven教程详解地址
- [spring源码学习]七、IOC源码-Context
- c#游戏 剪刀石头
- mysql-关于Unix时间戳(unix_timestamp)
- Cookie设置HttpOnly,Secure,Expire属性
- linux之x86裁剪移植---字符界面sdl开发入门
- linux之x86裁剪移植---字符界面sdl开发入门
- js关于字符串空格的处理
- ortp中的queue_t,msgb(mblk_t)和datab(也适用于solaris驱动所使用的数据结构)
- DrawCall优化
- linux之x86裁剪移植---字符界面sdl开发入门