Flask知识点

flask知识点:逻辑:indexfrom flask import *from flask_sqlalchemy import SQLAlchemy# 导入captcha 用于生成验证码from captcha.captcha import captchafrom flask_uploads import UploadSet, IMAGES, configure_uploadsimport sysimport osimport re

app = Flask(__name__)app.secret_key = ‘1812B1234567890‘app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql+pymysql://root:[email protected]:3306/KaoShi‘db = SQLAlchemy(app)

fn = getattr(sys.modules[‘__main__‘], ‘__file__‘)root_path = os.path.abspath(os.path.dirname(fn)) + "/static/upload"app.config[‘UPLOADED_PHOTO_DEST‘] = root_pathapp.config[‘UPLOADED_PHOTO_ALLOW‘] = IMAGESphotos = UploadSet(‘PHOTO‘) # 用来保存图片的对象 photos.save()configure_uploads(app, photos)

# 用户表class User(db.Model):    __tablename__ = ‘user‘    id = db.Column(db.Integer, primary_key=True)    user_name = db.Column(db.String(200))    pwd = db.Column(db.String(200))    tel = db.Column(db.String(20))

# 分类表class Cate(db.Model):    __tablename__ = ‘cate‘    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(200))    goods_list = db.relationship(‘Goods‘, backref=‘cate‘)

# 商品表class Goods(db.Model):    __tablename__ = ‘goods‘    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(200))    img_url = db.Column(db.String(500))    price = db.Column(db.DECIMAL(10,2), default=9999999.99)    # 详情,需要使用图文混排输入    content = db.Column(db.Text)    c_id = db.Column(db.Integer, db.ForeignKey(‘cate.id‘))

# 首页@app.route(‘/‘)def index():    d={}    # 加载数据,展示页面    cate_list = Cate.query.all()    d[‘cate_list‘] = cate_list    return render_template(‘首页.html‘, data=d)

# 列表页@app.route(‘/view/<c_id>‘, methods=[‘GET‘, ‘POST‘])def view(c_id):    """根据分类ID查询对应到商品列表,并展示"""    if request.method == ‘POST‘:        # 开始批量删除        # 获取数据,被选择的商品ID列表        del_list = request.form.getlist(‘select‘)        for g_id in del_list:            g = Goods.query.get(g_id)            db.session.delete(g)            db.session.commit()

    current_page = request.args.get(‘page‘, 1, type=int)    # 当前页    per_page = 2        # 每页显示的条数

    d = {}    # 加载数据,展示页面

    # 菜单    cate_list = Cate.query.all()    d[‘cate_list‘] = cate_list

    # 商品列表    goods_list = Goods.query.filter(Goods.c_id == c_id).paginate(current_page, 2)    d[‘goods_list‘] = goods_list.items     # 商品列表信息    d[‘current_page‘] = goods_list.page     # 当前页    d[‘total_page‘] = goods_list.pages      # 总页数    d[‘c_id‘] = c_id                        # 当前分类ID

    # 展示页面    return render_template(‘列表页.html‘, data=d)

# 商品详情@app.route(‘/detail/<g_id>‘)def detail(g_id):    d = {}

    goods = Goods.query.get(g_id)    d[‘goods‘] = goods    return render_template(‘商品详情页.html‘, data=d)

# 注册@app.route(‘/register‘, methods=[‘GET‘, ‘POST‘])def register():    if request.method == ‘POST‘:        # 1、获取数据        # 用户名        user_name = request.form.get(‘user_name‘)        # 密码        pwd = request.form.get(‘pwd‘)        # 手机号        tel = request.form.get(‘tel‘)        # 验证码        img_code = request.form.get(‘img_code‘)

        # 2、验证数据(验证码、正则匹配手机号)        if all([user_name, pwd, tel, img_code]):            # 正则验证手机号            if re.match(‘1[3-9]\d{9}‘, tel):                # 验证码 - 忽略大小写 lower()                if img_code.lower() == session.get(‘img_code‘).lower():

                    # 3、组织数据,(生成一个 User类 的实例)                    u = User()                    u.user_name = user_name                    u.pwd = pwd                    u.tel = tel

                    # 4、数据写入到数据库                    db.session.add(u)                    db.session.commit()

                    return redirect(url_for(‘index‘))                else:                    flash(‘验证码不正确‘)            else:                flash(‘手机号格式错误‘)        else:            flash(‘数据不完整‘)

    # 展示注册页面    return render_template(‘注册页面.html‘)

# 生成验证码图片@app.route(‘/get_image‘)def get_image():    name, text, image = captcha.generate_captcha()    # 保存验证码图片 内容(文本)    session[‘img_code‘] = text

    # 返回对象Response    res = make_response(image)    res.headers[‘Content-Type‘] = ‘image/jpg‘    return res

# 添加分类@app.route(‘/add_cate‘, methods=[‘GET‘, ‘POST‘])def add_cate():    if request.method == ‘POST‘:        # 获取数据        cate_name = request.form.get(‘name‘)

        # 验证数据        if all([cate_name]):            # 判断分类是否存在            c_temp = Cate.query.filter(Cate.name == cate_name).first()            if c_temp:                flash(‘类别已经存在‘)            else:                # 添加到数据库                c = Cate(name=cate_name)                db.session.add(c)                db.session.commit()                flash(‘添加成功‘)        else:            flash(‘信息不完整‘)

    # 展示页面    d={}    cate_list = Cate.query.all()    d[‘cate_list‘] = cate_list    return render_template(‘后台添加分类.html‘, data=d)

# 添加商品@app.route(‘/add_goods‘, methods=[‘GET‘, ‘POST‘])def add_goods():    # 添加商品    if request.method == "POST":        # 1、获取数据        cate_id = request.form.get(‘cate‘) # 分类ID        name = request.form.get(‘name‘)        price = request.form.get(‘price‘)        img = request.files.get(‘img‘)        content = request.form.get(‘content‘)

        # 2、验证数据        if all([cate_id, name, price, content]):            # 3、整理数据。上传图片。生成一个Goods的实例            g = Goods()            g.name = name            g.price = price            g.content = content            g.c_id = cate_id

            # 判断用户是否选择了图片            if img:                filename = photos.save(img)                img_path = ‘/static/upload/‘ + filename                g.img_url = img_path

            # 4、写入到数据库            db.session.add(g)            db.session.commit()            flash(‘添加商品成功‘)        else:            flash(‘信息不完整‘)

    # 展示页面    d={}    cate_list = Cate.query.all()    d[‘cate_list‘] = cate_list    return render_template(‘后台添加商品.html‘, data=d)

# 保存富文本的图片@app.route(‘/submit-image‘, methods=[‘GET‘, ‘POST‘])def submit_image():    # 获取文件 get(‘file‘) 为固定写法    img = request.files.get(‘file‘)    image_name = photos.save(img)  # 将头像保存到 程序目录下    image_url = ‘/static/upload/‘ + image_name  # 生成图片保存到地址

    mes = {}    mes[‘path‘] = image_url     # key为固定值,不可随意修改    mes[‘error‘] = False        # key为固定值,不可随意修改    return jsonify(mes)

if __name__ == ‘__main__‘:    # db.drop_all()    # db.create_all()    app.run()

原文地址:https://www.cnblogs.com/Jacky-WYQ/p/10915733.html

时间: 2024-10-19 16:15:37

Flask知识点的相关文章

Flask 知识点

flask知识点 app.config['JSON_AS_ASCII'] = False #中文转换@app.route('/user/<user>')动态路由,通过函数传参jsonify() 转换成页面能看懂得json字符串redirct('') 跳转路由地址redirct(url_for(函数名)) 跳转函数名abort(404) 抛出异常'{}'.format(函数) 格式化格式 动态传参 max_age = 3600 设置过期时间 秒ck = make_response() 生成一个复

[py]flask从0到1

flask知识点 1.后端渲染html到前端 render_template 2.后端获取前端数据 request.args.get 3.前端获取后端数据 模板 4.警示消息 flash {{ get_flashed_messages()[0] }} 第一个 hello maotai from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Mao Tai!' if

Python Flask框架——全栈开发(知了课堂)

章节1:Flask视图和URL 课时1[虚拟环境]为什么需要虚拟环境06:28 课时2[虚拟环境]virtualenv创建虚拟环境13:55 课时3[虚拟环境]virtualenvwrapper使用16:42 课时4[Flask预热]课程介绍45:34 课时5[Flask预热]Flask课程准备工作11:30 课时6[Flask预热]URL组成部分详解14:02 课时7[Flask预热]web服务器+应用服务器+web应用框架14:16 课时8[Flask URL]第一个flask程序详解24:

1、关于Flask

1.关于Flask 知识点 了解Flask 为什么要用Web框架 Flask框架的特点 常用的Flask扩展包 安装环境 配置虚拟环境 安装Flask 从Hello World开始 给路由传递参数 返回状态码 重定向 正则URL 捕获异常 设置cookie和获取cookie 扩展 上下文 请求钩子 Flask装饰器路由的实现 Flask-Script命令行 1.1 了解框架: Flask作为Web框架,它的作用主要是为了开发Web应用程序.那么我们首先来了解下Web应用程序.Web应用程序 (W

flask 小入门知识点 2018.12.19

今天听得一脸懵逼,主要因为自己英文底子太差了 不耽误时间了,少总结下,开始复习... 代码: # -*- encoding: utf-8 -*- # 导入重定向模块 , url_for简易寻址跳转,jsonify强转为json格式的数据 from flask import Flask,redirect,url_for,jsonify #建立一个配置类 class Config(object): DEBUG = True JSON_AS_ASCII = False # 建立FLASK对象 app

Flask框架知识点整合

Flask 0.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. "微"(micro) 并不表示

怎么使用Python和Flask在Linux上创建应用

无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会,也是一个从零基础开始学习python开发(http://www.maiziedu.com/course/python/)的一个好机会,pyhon学起来很有趣且在实际的应用如yum包管理器中很有用. 给大家分享一个关于很赞的教程贴,本篇教程会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函

python的Flask 介绍

Flask 介绍 知识点 微框架.WSGI.模板引擎概念 使用 Flask 做 web 应用 模板的使用 根据 URL 返回特定网页 实验步骤 1. 什么是 Flask? Flask 是一个 web 框架.也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序.这个 wdb 应用程序可以使一些 web 页面.博客.wiki.基于 web 的日历应用或商业网站. Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架.这既有

《flask web 开发》笔记 -- (1)? 安装

使用虚拟环境,在这个虚拟环境中可以安装私有包,而不会影响系统中安装的全局python解释器 好处:虚拟环境可以避免包的混乱和冲突,而且不需要管理员权限 安装: pip install virtualenv 保存示例代码,git clone https://******** 不详述 git checkout 1a #切换到1a分支 建立虚拟环境 virtualenv venv #建立名为venv的虚拟环境 激活虚拟环境 source venv/bin/activate #执行venv/bin/文件