项目使用插件:

flask_bootstrap

flask_wtf

flask_login

flask_sqlalchemy

用户模型类:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/8/1 14:45

# @File : Model.py

"""

数据模型

"""

from flask_login import LoginManager,login_user,UserMixin,logout_user,login_required

from Start import login_manger

from Start import db

class Users(UserMixin,db.Model):

__tablename__ = 'py_user'#对应mysql数据库表

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(64), unique=True, index=True)

pwd = db.Column(db.String(64), unique=True, index=True)

def __init__(self,name,pwd):

self.name=name

self.pwd=pwd

def get_id(self):

return unicode(self.id)

def __repr__(self):

return '' % self.name

def is_authenticated(self):

return True

def is_active(self):

return True

def is_anonymous(self):

return False

表单类:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/8/1 14:46

# @File : Form.py

"""

表单类

"""

from wtforms import StringField,SubmitField,PasswordField

from wtforms.validators import Required

from flask_wtf import FlaskForm

#登录表单

class Login_Form(FlaskForm):

name=StringField('name',validators=[Required()])

pwd=PasswordField('pwd',validators=[Required()])

submit=SubmitField('Login in')

#注册表单

class Register_Form(FlaskForm):

name=StringField('name',validators=[Required()])

pwd=PasswordField('pwd',validators=[Required()])

submit=SubmitField('register')

视图类:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/8/1 14:45

# @File : Views.py

"""

视图模型

"""

from flask import render_template,Blueprint,redirect,url_for,flash

from Start import login_manger

from Form import Login_Form,Register_Form

from Model import Users

from flask_login import LoginManager,login_user,UserMixin,logout_user,login_required

from DB import db

blog=Blueprint('blog',__name__) #蓝图

@blog.route('/')

def index():

form=Login_Form()

return render_template('login.html',form=form)

@blog.route('/index')

def l_index():

form = Login_Form()

return render_template('login.html',form=form)

@blog.route('/login',methods=['GET','POST'])

def login():

form=Login_Form()

if form.validate_on_submit():

user=Users.query.filter_by(name=form.name.data).first()

if user is not None and user.pwd==form.pwd.data:

login_user(user)

flash('登录成功')

return render_template('ok.html',name=form.name.data)

else:

flash('用户或密码错误')

return render_template('login.html',form=form)

#用户登出

@blog.route('/logout')

@login_required

def logout():

logout_user()

flash('你已退出登录')

return redirect(url_for('blog.index'))

@blog.route('/register',methods=['GET','POST'])

def register():

form=Register_Form()

if form.validate_on_submit():

user=Users(name=form.name.data,pwd=form.pwd.data)

db.session.add(user)

db.session.commit()

flash('注册成功')

return redirect(url_for('blog.index'))

return render_template('register.html',form=form)

项目启动类:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/8/1 14:50

# @File : Start.py

"""

应用启动类

"""

from flask import Flask,render_template,flash,url_for,redirect,Blueprint

from flask_bootstrap import Bootstrap

from flask_moment import Moment

from flask_wtf import FlaskForm

from flask_login import LoginManager,login_user,UserMixin,logout_user,login_required

from flask_sqlalchemy import SQLAlchemy

import sys

#解决flash的一个bug

defaultencoding = 'utf-8'

if sys.getdefaultencoding() != defaultencoding:

reload(sys)

sys.setdefaultencoding(defaultencoding)

app = Flask(__name__)

#各项插件的配置

app.config['SECRET_KEY']='kkk'

app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:*****@localhost/mydata'#配置数据库

app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True

db = SQLAlchemy()

db.init_app(app)

bootstrap = Bootstrap(app)

moment=Moment(app)

login_manger=LoginManager()

login_manger.session_protection='strong'

login_manger.login_view='blog.login'

login_manger.init_app(app)

@login_manger.user_loader

def load_user(user_id):

from Model import Users

return Users.query.get(int(user_id))

"""

蓝图注册

"""

def init():

from Views import blog

app.register_blueprint(blueprint=blog,url_prefix='/blog')

if __name__ == '__main__':

init()

app.run(port=6626,debug=True)

本例使用了Jinja2模板进行渲染

基础类模板:

{% extends "bootstrap/base.html" %}

{% block title %}Flasky{% endblock %}

{% block head %}

{{ super() }}

{% endblock %}

{% block navbar %}

Toggle navigation

Flasky

  • Home

{% if current_user.is_authenticated %}

Log Out

{% else %}

Log In

{% endif %}

  • Register in

{% endblock %}

{% block content %}

{% for message in get_flashed_messages() %}

×

{{ message }}

{% endfor %}

{% block page_content %}{% endblock %}

{% endblock %}

{% block scripts %}

{{ super() }}

{{ moment.include_moment() }}

{% endblock %}

登录模板:

{% extends "form_base.html" %}

{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky{% endblock %}

{% block page_content %}

Login

{{ wtf.quick_form(form) }}

{% endblock %}

注册模板:

{% extends "form_base.html" %}

{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky{% endblock %}

{% block page_content %}

Register

{{ wtf.quick_form(form) }}

{% endblock %}

登录后模板:

{% extends 'form_base.html' %}

Title

{% block page_content %}

Hello,{{ name }}

{% endblock %}

启动后访问:

mysql中完成登陆注册_Flask+MySql实现用户登录注册相关推荐

  1. html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互

    最近实现了Node.js当作后台,jQuery写前台AJAX代码的,实现用户登录和注册的功能,刷新了前后端交互的三观.特记录一下. 1.login.ejs实现form框架 用户名 密码 form不加m ...

  2. [golang gin框架] 29.Gin 商城项目-用户登录,注册操作

    一.用户登录,注册界面展示说明 先看登录,注册界面以及相关流程,再根据流程写代码,一般网站的登录,注册功能都会在一个页面进行操作,还有的是在几个页面进行操作,这里讲解在几个页面进行注册的操作,步骤如下 ...

  3. python 搭建登陆系统,用Python连接操作MySQL数据库,做一个简单的用户登录注册系统...

    我们可以很容易地用Python实现一个用户登录系统,相信这即使是对编程新手来说也是小菜一碟. 作为Python的小萌新,今天我想记录下来的是如何实现一个连接了MySQL数据库的用户登录注册系统,它的效 ...

  4. mysql添加远程登陆权限及mysql远程连接命令

    mysql添加远程登陆权限及mysql远程连接命令 1.mysql使用本身环境下面mysql数据库中的user表来管理用户及权限 mysql> use mysql;Database change ...

  5. mysql binlog跟踪_在MySQL中使用init-connect与binlog来实现用户操作追踪记录

    在MySQL中使用init-connect与binlog来实现用户操作追踪记录 分类: MySQL 前言: 测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查 ...

  6. PHP+MySQL实现用户登录注册API接口

    最近在学习PHP后台相关知识,利用PHP连接MySQL数据库实现了一个简单的用户登录注册及修改密码的API接口,接口为标准的json输出,本地验证通过.功能比较简单,不过也自己摸索了挺长时间,期间各种 ...

  7. mysql中or详细使用方式(Mysql之and和or混合使用) MES

    mysql中or详细使用方式(Mysql之and和or混合使用) 在mysql中,经常会遇到这样的情况,在写条件语句where时,可能会同时有多个条件的"或"或者"与&q ...

  8. mysql doen s exist_Mysql实例Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误...

    <Mysql实例Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen't exist错误>要点: 本文介绍了Mysql实例Mysql中大小写敏感问题导致的 ...

  9. MySQL中关于emoji表情的存储(微信登录出现登录失败【由于微信昵称字符问题】)

    MySQL中关于emoji表情的存储(微信登录出现登录失败[由于微信昵称字符问题]) 问题描述 解决方法 闲谈 问题描述 今天网站遇到用户说登录失败,查看日志发现是微信登录自动生成用户时,用户创建失败 ...

  10. mysql linux改user_linux mysql误修改user表导致无法root用户登录,求大神帮助。-问答-阿里云开发者社区-阿里云...

    linux mysql误修改user表导致无法root用户登录,急救!!! mysql> select user,host,password from user; user host passw ...

最新文章

  1. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
  2. javascript中创建对象的几种方式
  3. Apriori算法简介及实现(python)
  4. PyTorch实战GANs
  5. java 递归 堆栈_尾递归函数仍在Java吹堆栈
  6. python中奇数怎么表示_如何在python输出数据中的奇数
  7. 作为Java程序员应该掌握的10项技能
  8. autojs 云控_autojs websocket 核心示例代码,云控技术
  9. 变压器绕组降低邻近效应_高功率UPS性能提升,规格/重量显著降低
  10. MySQL基础_模糊查询—between and in is null <=>(安全等于)等关建字
  11. 面试题--------3、string stringbuffer stringbuilder的区别
  12. Cassandra Wiki Login JmxSecurity
  13. wget下载报错403
  14. 浅谈马尔可夫预测方法
  15. linux中oracle数据乱码,Linux环境解决Oracle 中文乱码
  16. 实时数仓的实时保障指南
  17. 买iPhone担心买到翻新机?教你一招,轻松鉴别各个版本
  18. 导出DNS服务器上的记录
  19. 教你仿写 Flipboard 的翻页效果
  20. 如何用Qt绘制一颗好看的二叉树

热门文章

  1. 《南溪的目标检测学习笔记》——主干网络backbone设计的学习笔记
  2. COCO和 PASCAL VOC标注格式的学习笔记
  3. 《Python数据分析》第二版.第二章.[学习笔记][Jupyter notebook]
  4. js中的getBoundingClientRect()函数
  5. typora使用pandoc导出功能
  6. 【JVM】类是怎么加载的?
  7. 学生信息管理系统问题集锦(三)
  8. IT男几时而立(下)
  9. jvm-内存区域与内存溢出异常
  10. cannot open shared object file: No such file or directory