flask.html 第二题

    xiaoxiao2022-07-14  146

    插件 插件 models.py(表)

    # -*- encoding: utf-8 -*- """Todo:""" from apps import * from datetime import datetime class BaseModel(): create_time =db.Column(db.DateTime, default=datetime.now(), comment="创建时间") update_time = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), comment="更新时间") class Cate(db.Model, BaseModel): id = db.Column(db.Integer, primary_key=True, comment="商品分类主键ID") name = db.Column(db.String(100), nullable=False, comment="分类名称") goods = db.relationship("Goods", backref="cate") class Goods(db.Model, BaseModel): id = db.Column(db.Integer, primary_key=True, comment="商品主键ID") goods_name = db.Column(db.String(100), nullable=False, comment="商品名称") cate_id = db.Column(db.Integer, db.ForeignKey("cate.id"))

    db_manager.py(迁移)

    """Todo:""" from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from models import * manager = Manager(app=app) migrate = Migrate(db=db, app=app) manager.add_command("db", MigrateCommand) if __name__ == '__main__': manager.run()

    manage.py(蓝图)

    # -*- encoding: utf-8 -*- """Todo:""" from models import * from modules.web.index import index_blue from modules.web.goods import goods_blue app.register_blueprint(index_blue) app.register_blueprint(goods_blue) if __name__ == '__main__': app.run()

    config.py(设置flask 配置文件)

    DEBUG = True SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:@localhost:3306/exam_base?charset=utf8" SQLALCHEMY_ECHO = False SECRET_KEY = "ABC" SQLALCHEMY_TRACK_MODIFICATIONS = False

    apps.py

    # -*- encoding: utf-8 -*- """Todo:""" from flask import Flask, redirect, url_for, request, render_template, Blueprint, flash from flask_sqlalchemy import SQLAlchemy from flask_uploads import UploadSet, IMAGES, configure_uploads import sys, os app = Flask(__name__) app.config.from_object("config") enter = getattr((sys.modules["__main__"]), "__file__") root_path = os.path.dirname(enter)+"/static/upload" app.config["UPLOADED_PICSAVE_DEST"] = root_path app.config["UPLOADED_PICSAVE_ALLOW"] = IMAGES picSave = UploadSet("PICSAVE") configure_uploads(app, picSave) db = SQLAlchemy(app=app)

    创建modules文件夹下创建web文件夹下创建 goods.py 下创建index.py index.py

    # -*- encoding: utf-8 -*- """Todo:""" from models import * index_blue = Blueprint("index", __name__) @index_blue.route("/") def index(): return render_template("web/index.html")

    index.html

    {% extends "web/base.html" %} {% block top %} <title>首页</title> {% endblock top %} {% block content %} {{ super() }} <div> <h1 style="color: green;">首页</h1> </div> {% endblock content %}

    goods.py

    # -*- encoding: utf-8 -*- """Todo:""" from models import * goods_blue = Blueprint("goods", __name__) @goods_blue.route("/add_cate", methods=["POST", "GET"]) def add_cate(): if request.method == "POST": name = request.form.get("name") try: one_cate = Cate(name=name) db.session.add(one_cate) db.session.commit() flash("添加成功") except Exception as e: flash("添加不成功") return render_template("web/add_cate.html") @goods_blue.route("/add_goods", methods=["POST", "GET"]) def add_goods(): cates = Cate.query.all() if request.method == "POST": goods_name = request.form.get("goods_name") cate_id = request.form.get("cate_id") try: one_goods = Goods(goods_name=goods_name, cate_id=cate_id) db.session.add(one_goods) db.session.commit() flash("添加成功") except Exception as e: flash("添加不成功") return render_template("web/add_goods.html", cates=cates) @goods_blue.route("/all_goods") def all_goods(): page = int(request.args.get("page", 1)) goods = Goods.query.order_by(Goods.id.desc()).paginate(page, 5) return render_template("web/all_goods.html", goods=goods) @goods_blue.route("/cate_detail") def cate_detail(): cate_id = request.args.get("cate_id") one_cate = Cate.query.get(cate_id) return render_template("web/cate_detail.html", one_cate=one_cate) @goods_blue.route("/delete_goods", methods=["GET", "POST"]) def delete_goods(): cate_id = request.args.get("cate_id") goods_ids = request.form.getlist("goods_ids") for goods_id in goods_ids: try: one_goods = Goods.query.get(goods_id) db.session.delete(one_goods) db.session.commit() flash("删除成功") except Exception as e: flash("删除失败") return redirect(url_for("goods.cate_detail", cate_id=cate_id)) @goods_blue.route("/delete_one_goods") def delete_one_goods(): goods_id = request.args.get("goods_id") cate_id = request.args.get("cate_id") one_goods = Goods.query.get(goods_id) try: db.session.delete(one_goods) db.session.commit() flash("删除成功") except Exception as e: flash("删除失败") return redirect(url_for("goods.cate_detail", cate_id=cate_id)) @goods_blue.route("/delete_all_goods", methods=["GET", "POST"]) def delete_all_goods(): goods_ids = request.form.getlist("goods_ids") for goods_id in goods_ids: try: one_goods = Goods.query.get(goods_id) db.session.delete(one_goods) db.session.commit() flash("删除成功") except Exception as e: flash("删除失败") return redirect(url_for("goods.all_goods"))

    base.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> {% block top %} <title>Title</title> <script type="text/javascript" src="../../static/web/js/jquery.js"></script> {% endblock top %} </head> <body> {% block content %} <div style="text-align: center;"> <a href="{{ url_for("index.index") }}">首页</a>| <a href="{{ url_for("goods.add_cate") }}">添加分类</a>| <a href="{{ url_for("goods.add_goods") }}">添加商品</a>| <a href="{{ url_for("goods.all_goods") }}">所有商品</a>| </div> {% endblock content %} </body> </html>

    add_cate.html

    {% extends "web/base.html" %} {% block top %} <title>添加商品分类</title> {% endblock top %} {% block content %} {{ super() }} <div> <table align="center"> <form action="" method="post"> <tr> <td>商品分类:</td> <td><input type="text" name="name" placeholder="请输入商品分类"></td> </tr> <tr> <td colspan="2"><input type="submit" value="添加"></td> </tr> </form> </table> {% for message in get_flashed_messages() %} <span style="color: red; text-align: center;">{{ message }}</span> {% endfor %} </div> {% endblock content %}

    add_goods.html

    {% extends "web/base.html" %} {% block top %} <title>添加商品分类</title> {% endblock top %} {% block content %} {{ super() }} <div> <table align="center"> <form action="" method="post"> <tr> <td>分类:</td> <td> <select name="cate_id"> {% for cate in cates %} <option value="{{ cate.id }}" {% if cate.id==cate_id %} selected {% endif %}>{{ cate.name }}</option> {% endfor %} </select> </td> </tr> <tr> <td>商品名称:</td> <td><input type="text" name="goods_name" placeholder="请输入商品名称"></td> </tr> <tr> <td colspan="2"><input type="submit" value="添加"></td> </tr> </form> </table> {% for message in get_flashed_messages() %} <span style="color: red;">{{ message }}</span> {% endfor %} </div> {% endblock content %}

    all_goods.html

    {% extends "web/base.html" %} {% block top %} <title>添加商品分类</title> {{ super() }} <script type="text/javascript" src="../../static/web/js/jquery.pagination.min.js"></script> <link rel="stylesheet" href="../../static/web/css/jquery.pagination.css"> {% endblock top %} {% block content %} {{ super() }} <div> <table align="center"> <form action="{{ url_for("goods.delete_all_goods") }}" method="post"> <tr> <td>商品ID</td> <td>商品名称</td> <td>商品分类</td> </tr> {% for good in goods.items %} <tr> <td><input type="checkbox" name="goods_ids" value="{{ good.id }}">{{ good.id }}</td> <td>{{ good.goods_name }}</td> <td><a href="{{ url_for("goods.cate_detail", cate_id=good.cate_id) }}">{{ good.cate.name }}</a></td> </tr> {% endfor %} <tr align="right"> <td colspan="3"><input type="submit" value="批量删除"></td> </tr> </form> </table> <div id="page" style="text-align: center;"> </div> <script> $(function () { $("#page").pagination( { currentPage:{{ goods.page }}, totalPage:{{ goods.pages }}, callback:function (current) { window.location.href = "?page=" + current } } ) }) </script> {% for message in get_flashed_messages() %} <span style="color: red;">{{ message }}</span> {% endfor %} </div> {% endblock content %}

    all_goods.html

    {% extends "web/base.html" %} {% block top %} <title>添加商品分类</title> {{ super() }} <script type="text/javascript" src="../../static/web/js/jquery.pagination.min.js"></script> <link rel="stylesheet" href="../../static/web/css/jquery.pagination.css"> {% endblock top %} {% block content %} {{ super() }} <div> <table align="center"> <form action="{{ url_for("goods.delete_all_goods") }}" method="post"> <tr> <td>商品ID</td> <td>商品名称</td> <td>商品分类</td> </tr> {% for good in goods.items %} <tr> <td><input type="checkbox" name="goods_ids" value="{{ good.id }}">{{ good.id }}</td> <td>{{ good.goods_name }}</td> <td><a href="{{ url_for("goods.cate_detail", cate_id=good.cate_id) }}">{{ good.cate.name }}</a></td> </tr> {% endfor %} <tr align="right"> <td colspan="3"><input type="submit" value="批量删除"></td> </tr> </form> </table> <div id="page" style="text-align: center;"> </div> <script> $(function () { $("#page").pagination( { currentPage:{{ goods.page }}, totalPage:{{ goods.pages }}, callback:function (current) { window.location.href = "?page=" + current } } ) }) </script> {% for message in get_flashed_messages() %} <span style="color: red;">{{ message }}</span> {% endfor %} </div> {% endblock content %}

    cate_detail.html

    {% extends "web/base.html" %} {% block top %} <title>分类详情</title> {% endblock top %} {% block content %} {{ super() }} <div style="text-align: center;"> <table align="center"> <form action="{{ url_for("goods.delete_goods", cate_id=one_cate.id) }}" method="post"> <tr> <td>商品ID</td> <td>商品名称</td> <td>商品分类</td> <td>操作</td> </tr> {% for goods in one_cate.goods %} <tr> <td><input type="checkbox" name="goods_ids" value="{{ goods.id }}">{{ goods.id }}</td> <td>{{ goods.goods_name }}</td> <td>{{ one_cate.name }}</td> <td><a href="{{ url_for("goods.delete_one_goods", goods_id=goods.id, cate_id=goods.cate_id) }}">删除</a></td> </tr> {% endfor %} <tr align="right"> <td colspan="4"><input type="submit" value="批量删除"></td> </tr> </form> </table> {% for message in get_flashed_messages() %} <span style="color: red;">{{ message }}</span> {% endfor %} </div> {% endblock content %}
    最新回复(0)