查看“Python Flask: 实现用户注册功能”的源代码
←
Python Flask: 实现用户注册功能
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==创建注册路由== 在manage.py入口文件中,创建一个名为app的Flask实例, 然后用app.route()函数创建路由。 <nowiki> from flask import Flask, render_template, flash, redirect, url_for, session, request, logging from mysql_util import MysqlUtil from passlib.hash import sha256_crypt 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> ==创建模板文件== ===创建模板文件=== 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> ===创建公共文件=== ====layout.html==== *extends 'layout.html':引入公共文件layout.html <nowiki> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>读书笔记</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="/static/css/style.css"> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> {% include 'includes/_navbar.html' %} <div class="container"> {% include 'includes/_messages.html' %} {% block body %}{% endblock %} </div> {% include 'includes/_footer.html' %} </body> </html></nowiki> ====includes/_navbar.html==== <nowiki> <nav class="navbar navbar-default"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">学习笔记</a> </div> <div id="navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="/">主页</a></li> <li><a href="/articles">笔记</a></li> <li><a href="/about">关于</a></li> </ul> <ul class="nav navbar-nav navbar-right"> {% if session.logged_in %} <li><a href="/dashboard">控制台</a></li> <li><a href="/logout">退出</a></li> {% else %} <li><a href="/register">注册</a></li> <li><a href="/login">登录</a></li> {% endif %} </ul> </div><!--/.nav-collapse --> </div> </nav> </nowiki> ====includes/_messages.html==== <nowiki> {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} <div class="alert alert-{{ category }}">{{ message }}</div> {% endfor %} {% endif %} {% endwith %} {% if error %} <div class="alert alert-danger">{{error}}</div> {% endif %} {% if msg %} <div class="alert alert-success">{{msg}}</div> {% endif %} </nowiki> ====includes/_footer.html==== <nowiki> <!-- Footer --> <footer class="page-footer font-small blue" style="margin-top: 50px"> <!-- Copyright --> <div class="footer-copyright text-center py-3"> Copyright ©2007-2019 <a href="http://www.mingrisoft.com">明日科技有限公司</a> All Rights Reserved 吉ICP备10002740号-2 吉公网安备22010202000132 </div> <!-- Copyright --> </footer> <!-- Footer --> </nowiki> ====includes/_formhelpers.html==== 定义了一个宏render_field <nowiki> {% macro render_field(field) %} {{ field.label }} {{ field(**kwargs)|safe }} {% if field.errors %} {% for error in field.errors %} <span class="help-inline text-danger">{{ error }}</span> {% endfor %} {% endif %} {% endmacro %}</nowiki> ==实现注册功能== 通过request.method 判断是否提交了表单, 然后通过form.validate() 进行字段验证, 获取信息,并加密, 将信息写入数据库 跳转到登陆页面 并显示成功信息 如果注册失败,则显示注册信息。 <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>
返回至
Python Flask: 实现用户注册功能
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息