PHP前端开发

python中flask的应用实例(代码)

百变鹏仔 1个月前 (01-23) #Python
文章标签 应用实例

本篇文章给大家带来的内容是关于python中flask的应用实例(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

将用户登陆信息绑定数据库

要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆

#config.py文件,用来创建远程连接的类class DB:    HOST = '192.168.1.227'    USER= 'root'    PASSWD = 'sheen'    PORT = 3306    DBNAME = 'test'
# 主程序import pymysqlfrom config import DB# 1. 创建连接conn = pymysql.connect(    host=DB.HOST,    user=DB.USER,    passwd=DB.PASSWD,    port=DB.PORT,    db=DB.DBNAME,)cur = conn.cursor()def isUserExist(username):    """判断用户名是否存在"""    sqli = "select * from users where name='%s'" %(username)    res = cur.execute(sqli)    # res返回的是sql语句查询结果的个数;    #  如果为0, 没有查到。    if res == 0:        return  False    else:        return  Truedef isPasswdOk(username, passwd):    sqli = "select * from users where name='%s' and passwd='%s'" %(        username, passwd)    res = cur.execute(sqli)    if res == 0 :        return  False    else:        return  Truedef addUser(username, passwd):    """用户注册时, 添加信息到数据库中"""    sqli = "insert into users(name, passwd) values('%s', '%s')" %(        username, passwd)    try:        res = cur.execute(sqli)        conn.commit()    except Exception as e:        conn.rollback()        return e# cur.close()# conn.close()if __name__ == "__main__":    addUser('root', 'root')    print(isUserExist('root'))    print(isPasswdOk('root', 'root'))

判断用户是否登陆

某些网站的部分内容,只对已经登陆的用户显示,这时候,需要我们判断用户是否登陆

立即学习“Python免费学习笔记(深入)”;

import randomimport osfrom datetime import  datetimeimport psutilfrom flask import Flask, request, render_template, redirect, url_for, abort, sessionfrom models import isPasswdOk, isUserExist, addUserimport platformapp = Flask(__name__)app.config['SECRET_KEY'] =  random._urandom(24)import  functoolsdef is_login(f):    """判断用户是否登陆的装饰器"""    @functools.wraps(f)    def wrapper(*args, **kwargs):        # run函数代码里面, 如果登陆, session加入user, passwd两个key值;        # run函数代码里面, 如果注销, session删除user, passwd两个key值;        # 如果没有登陆成功, 则跳转到登陆界面        if 'user' not in session:            return  redirect('/login/')        # 如果用户是登陆状态, 则访问哪个路由, 就执行哪个路由对应的视图函数;        return  f(*args, **kwargs)    return  wrapper# 用户主页@app.route('/')def index():    return render_template('index.html')# 用户登陆按钮@app.route('/login/', methods=['GET', 'POST'])def login():    if request.method == 'POST':        print(request.form)        # 1. 如何获取到用户提交的信息呢?        user = request.form['user']        passwd = request.form['passwd']        # 2. 判断用户名和密码是否正确        if isPasswdOk(user, passwd):                # 将用户名和密码信息存储到session中;                session['user'] = user                session['passwd'] = passwd                # 如果登陆成功, 跳转到主页;                return redirect(url_for('index'))        else:            # 如果登陆失败, 重新登陆;            return  render_template('login.html', message="用户名或者密码错误")    else:        # 用户是GET请求, 返回登陆的html页面        # 1. 读取login.html文件的内容        # 2. 将读取的内容返回给用户界面        return render_template('login.html')# 用户注销@app.route('/logout/')def logout():    session.pop('user', None)    session.pop('passwd', None)    # 注销即删除用户的session信息, 注销成功, 跳转到首页;    return  redirect(url_for('index'))    # return  redirect('/')# 用户注册# http方法: get, post(需要提交用户名和密码信息)@app.route('/register/', methods=['GET', 'POST'])def register():    # 判断是否提交注册信息;    if request.method == 'POST':        user = request.form['user']        passwd = request.form['passwd']        if isUserExist(user):            message = "用户已经存在"            return  render_template('register.html', message=message)        else:            addUser(user, passwd)            return  redirect(url_for('login'))    else:        return  render_template('register.html')# 系统监控@app.route('/sysinfo/')@is_logindef sysinfo():    info = platform.uname()    # 获取开机时间的时间戳, 需要安装psutil模块;    boot_time = psutil.boot_time()    # 将时间戳转换为字符串格式, 两种方法, 任选一种l    # print(time.ctime(boot_time))    boot_time = datetime.fromtimestamp(boot_time)    # 获取当前时间    now_time = datetime.now()    # 获取时间差    delta_time = now_time - boot_time    delta_time = str(delta_time).split('.')[0]    return  render_template('sysinfo.html',                        hostname = info.node,                        sysname = info.system,                        release = info.release,                        machine = info.machine,                        now_time =  now_time,                        boot_time = boot_time,                        delta_time = delta_time                            )# 404异常处理: 类似于捕获异常@app.errorhandler(404)def not_found(e):    return  render_template('404.html')# 抛出异常@app.route('/user/<int:user_id>/')def user(user_id):    if 0<int(user_id)<=100:        return  "欢迎访问: %s" %(user_id)    else:        abort(404)app.run(port=5005)