Flask简单实例-6

本文介绍了Flask框架的基础使用,包括创建第一个应用、路由定义、视图函数、模板渲染和静态文件的处理,帮助初学者快速上手Flask Web开发。
摘要由CSDN通过智能技术生成

在这里插入图片描述

# py

from flask import Flask, request, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_object('setting')

db = SQLAlchemy(app=app)


''' 创建表 '''
# 分类表
class Cate(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30))
    pid = db.Column(db.Integer, default=0)

    goods = db.relationship('Goods', backref='one_cate')


# 商品表
class Goods(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30))
    cate_id = db.Column(db.Integer, db.ForeignKey(Cate.id))


# 添加一级分类
@app.route('/add_one_cate')
def add_one_cate():
    cate1 = Cate(name='潮流女装')
    cate2 = Cate(name='羽绒服')
    db.session.add_all([cate1, cate2])
    return '添加一级分类成功!'


# 添加二级分类
@app.route('/add_two_cate')
def add_two_cate():
    cate1 = Cate(name='连衣裙', pid=1)
    cate2 = Cate(name='毛衣', pid=1)
    cate3 = Cate(name='外套', pid=1)
    cate4 = Cate(name='毛呢大衣', pid=1)
    cate5 = Cate(name='毛领', pid=2)
    cate6 = Cate(name='鹅绒', pid=2)
    db.session.add_all([cate1, cate2, cate3, cate4, cate5, cate6])
    return '添加二级分类成功!'


# 添加商品
@app.route('/add_goods')
def add_goods():
    goods1 = Goods(name='新款连衣裙', cate_id=3)
    goods2 = Goods(name='雪纺连衣裙', cate_id=3)
    goods3 = Goods(name='连衣裙套装', cate_id=3)
    goods4 = Goods(name='加厚毛衣', cate_id=4)
    goods5 = Goods(name='新款毛衣', cate_id=4)
    goods6 = Goods(name='新款外套', cate_id=5)
    db.session.add_all([goods1, goods2, goods3, goods4, goods5, goods6])
    return '添加商品成功!'


@app.route('/cate_goods')
def cate_goods():
    cate_id = request.args.get('id')
    goodss = Goods.query.filter(Goods.cate_id == cate_id).all()
    return render_template('cate_goods.html', goodss=goodss)


@app.route('/')
def index():
    one_cates = Cate.query.filter(Cate.pid == 0).all()
    return render_template('index.html', one_cates=one_cates)


@app.template_filter('two_cates')
def two_cates(id):
    two_cates = Cate.query.filter(Cate.pid == id).all()
    return two_cates


if __name__ == '__main__':
    # db.create_all()
    app.run(port=9999)
# setting配置文件

DEBUG = True                # 开启调试模式
SECRET_KEY = "962464"       # 随机输入字符串
# SQLALCHEMY_DATABASE_URI = 链接的数据库类型+使用的驱动://用户名:密码@数据库地址:端口/数据库名称?数据库编码
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:mysql@127.0.0.1:3306/exam6?charset=utf8' # 连接数据库
# SQLALCHEMY_ECHO = True      # 在控制面板显示
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_COMMIT_ON_TEARDOWN = True        # 自动提交
{# index.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
    {% for one_cate in one_cates %}
        {{ one_cate.name }}
        <br>
        {% for two_cate in one_cate.id | two_cates %}
            <a href="{{ url_for('cate_goods', id=two_cate.id) }}">{{ two_cate.name }}</a> |
        {% endfor %}
        <hr>
    {% endfor %}
</body>
</html>
{# cate_goods.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>二级分类下商品</title>
</head>
<body>
    {% for goods in goodss %}
        {{ goods.id }}  |  {{ goods.name }}  | {{ goods.one_cate.name }} <br>
    {% endfor %}
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值