定义一个SQLALchemy Mixin,用于在Flask应用程序中创建引导下载按钮。
flask-download-btn的Python项目详细描述
Flask Download Btn定义了一个SQLALchemy Mixin,用于在Flask应用程序中创建Bootstrap下载按钮。在
其特点包括:
- 自动启用和禁用。单击下载按钮时自动禁用,下载完成后重新启用。在
- CSRF protection.下载按钮检查CSRF身份验证令牌,以确保客户端有权下载请求的文件。在
- Web表单处理。下载按钮响应Web表单。在
- Pre-download operations.下载按钮可以在下载文件之前轻松执行操作,从而可以轻松创建临时下载文件。在
- Progress bar.使用服务器发送的事件更新客户端的下载进度。在
安装
$ pip install flask-download-btn
快速启动
我们的文件夹结构如下:
^{pr2}$在templates/index.html
中,粘贴以下Jinja模板:
<html><head><!-- include Bootstrap CSS and Javascript --><linkrel="stylesheet"href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"><scriptsrc="https://code.jquery.com/jquery-3.4.1.min.js"></script><scriptsrc="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script><scriptsrc="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script><!-- include download button script --> {{ download_btn.script() }} </head><body><!-- render the download button and progress bar --> {{ download_btn.btn.render() }} {{ download_btn.render_progress() }} </body></html>
在app.py
中:
fromflask_download_btnimportDownloadBtnManager,DownloadBtnMixinfromflaskimportFlask,render_template,sessionfromflask_sqlalchemyimportSQLAlchemyfromsqlalchemy.ext.orderinglistimportordering_listapp=Flask(__name__)app.config['SECRET_KEY']='secret'app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///:memory:'app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=Falsedb=SQLAlchemy(app)# initialize download button manager with application and databasedownload_btn_manager=DownloadBtnManager(app,db=db)# create download button model and register it with the manager@DownloadBtnManager.registerclassDownloadBtn(DownloadBtnMixin,db.Model):id=db.Column(db.Integer,primary_key=True)# create the database and clear the session when the app starts@app.before_first_requestdefbefore_first_request():db.create_all()session.clear()HELLO_WORLD_URL='https://test-bucket2357.s3.us-east-2.amazonaws.com/hello_world.txt'# basic use@app.route('/')defindex():btn=DownloadBtn()btn.downloads=[(HELLO_WORLD_URL,'hello_world.txt')]db.session.commit()returnrender_template('index.html',download_btn=btn)
运行应用程序时:
$ python app.py
然后导航到http://localhost:5000/。单击“下载”按钮下载带有'Hello, World!'
的文本文件。在
引文
@software{bowen2020flask-download-btn,
author = {Dillon Bowen},
title = {Flask-Download-Btn},
url = {https://dsbowen.github.io/flask-download-btn/},
date = {2020-06-17},
}
许可证
用户必须在使用它的任何出版物中引用此软件包。在
它是由麻省理工学院License授权的。在
- 项目
标签: