flask 第7 题

    xiaoxiao2022-07-14  165

    插件

    插件

    manager.py

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

    apps.py

    """Todo:""" from flask import Flask,g,Blueprint,render_template,request,redirect,url_for,flash,session,make_response,jsonify from flask_sqlalchemy import SQLAlchemy from sqlalchemy import and_ import sys,os from flask_uploads import UploadSet, IMAGES, configure_uploads app = Flask(__name__) app.config.from_object('config') print(getattr(sys.modules['__main__'], '__file__')) enter = getattr(sys.modules['__main__'], '__file__') root_path = os.path.dirname(enter)+'/static/upload' app.config['UPLOADED_XINS_DEST'] = root_path # 设置上传路径 app.config['UPLOADED_XINS_ALLOW'] = IMAGES # 允许类型 xins = UploadSet('XINS') # 实例化图片上传类,设置上传的统一名称 configure_uploads(app, xins) # 将app的config配置注册到UploadSet实例xins db = SQLAlchemy(app=app)

    setting.py

    """Todo:""" DEBUG = True SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/exe1?charset=utf8' # SQLALCHEMY_ECHO = True SECRET_KEY = 'abc' SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_COMMIT_ON_TEARDOWN = True PER_PAGE_NUM=2

    exe1.py

    """Todo:""" from models import * @app.route('/') def index(): return render_template('index.html') #添加产品 @app.route('/add_goods',methods=['GET','POST']) def add_goods(): cates = Cate.query.all() if request.method == 'POST': goods_name = request.form.get('goods_name') content = request.form.get('content') c_id = request.form.get('cate_id') pic = request.files.get('pic') pic_url = '' if pic: pic_url = xins.save(pic) try: new_goods = Goods(goods_name=goods_name,content=content,c_id=c_id,pic=pic_url) db.session.add(new_goods) flash('修改成功') return redirect(url_for('index')) except Exception as e: flash('修改失败') return render_template('add_goods.html',cates=cates) #展示分类 @app.route('/show_cate') def show_cate(): cates = Cate.query.all() return render_template('show_cate.html',cates=cates) #展示产品 @app.route('/show_goods') def show_goods(): goodss = Goods.query.all() return render_template('show_goods.html',goodss=goodss) #详情展示 @app.route('/goods_details') def goods_details(): goods_id = request.args.get('goods_id') one_goods = Goods.query.get(goods_id) print(one_goods,'1') return render_template('goods_details.html',one_goods=one_goods) #添加分类图片 @app.route('/append_cate',methods=['GET','POST']) def append_cate(): if request.method == 'POST': name = request.form.get('name') pic = request.files.get('pic') pic_url = '' if pic: pic_url = xins.save(pic) try: new_cate = Cate(name=name,pic=pic_url) db.session.add(new_cate) flash('添加成功') except Exception as e: flash('添加失败') return render_template('append_cate.html') #分页 @app.route('/goods_list') def goods_list(): page = int(request.args.get('page',1)) goodss = Goods.query.paginate(page,2) return render_template('goods_list.html',goodss=goodss) if __name__ == '__main__': # db.drop_all() # db.create_all() app.run(port=9898)

    models.py

    """Todo:""" from apps import * class Cate(db.Model): id = db.Column(db.Integer,primary_key=True,comment='分类ID') name = db.Column(db.String(30),comment='分类名称') pic = db.Column(db.String(128), default='default.jpg', comment='产品图片') class Goods(db.Model): id = db.Column(db.Integer,primary_key=True,comment='产品ID') goods_name = db.Column(db.String(50),comment='产品名称') content = db.Column(db.Text,comment='产品介绍') pic = db.Column(db.String(128), default='default1.jpg', comment='产品图片') c_id = db.Column(db.Integer,db.ForeignKey('cate.id'),comment='外键指向分类ID')

    index.html

    {#ToDo:#} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h2>首页</h2> </body> </html>

    show_cate.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>所有分类</title> </head> <body> {% for foo in cates %} {{ foo.id }}{{ foo.name }} <br> 分类图片:<img src="../static/upload/{{ foo.pic }} " width="200px;"> <br> {% endfor %} </body> </html>

    append_cate.html

    {#ToDo:#} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加分类</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> 产品名称:<input type="text" name="name"> <br> 产品图片:<input type="file" name="pic"> <br> <input type="submit" value="确认添加"> <br> </form> {% for foo in get_flashed_messages() %} {{ foo }} <br> {% endfor %} </body> </html>

    show_goods.html

    {#ToDo:#} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>展示产品</title> </head> <body> {% for foo in goodss %} {{ foo.id }}{{ foo.goods_name }} <br> 分类图片:<img src="../static/upload/{{ foo.pic }} " width="200px;"> <br> <a href="{{ url_for('goods_details',goods_id=foo.id) }}">了解更多</a> <br> {% endfor %} </body> </html>

    goods_list.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>产品列表</title> <script type="text/javascript" src="../static/web/js/jquery.js" ></script> <link rel="stylesheet" href="../static/web/css/jquery.pagination.css"> <script type="text/javascript" src="../static/web/js/jquery.pagination.min.js"></script> </head> <body> {% for foo in goodss.items %} {{ foo.id }}{{ foo.goods_name }} <br> {% endfor %} <div id="page"></div> <script> $('#page').pagination( { currentPage: {{ goodss.page }}, totalPage: {{ goodss.pages }}, callback: function (page) { window.location.href='?page=' + page; } } ) </script> </body> </html>

    goods_datails.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>详情页</title> </head> <body> {{ one_goods.content | safe }} </body> </html>

    add_goods.html

    {#ToDo:#} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加产品</title> <script type="text/javascript" src="../static/web/js/jquery.js"></script> <script type="text/javascript" src="../static/web/tinymce/js/tinymce/tinymce.min.js"></script> <script type="text/javascript" src="../static/web/js/tinymce_setup.js"></script> </head> <body> <form action="" method="post" enctype="multipart/form-data"> 产品分类: <select name="cate_id" > {% for foo in cates %} <option value="{{ foo.id }}">{{ foo.name }}</option> {% endfor %} </select><br> 产品名称:<input type="text" value="" name="goods_name"> <br> 产品图片:<input type="file" name="pic"> <br> 产品内容:<input type="text" name="content" id="rich_content"> <br> <input type="submit" value="确认添加"> <br> </form> </body> </html>
    最新回复(0)