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__':
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>