700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql中完成登陆注册_Flask+MySql实现用户登录注册

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

时间:2024-02-28 12:39:31

相关推荐

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

项目使用插件:

flask_bootstrap

flask_wtf

flask_login

flask_sqlalchemy

用户模型类:

#!/usr/bin/env python

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

# @Time : /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 : /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 : /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)

mit()

flash('注册成功')

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

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

项目启动类:

#!/usr/bin/env python

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

# @Time : /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 %}

启动后访问:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。