使用Flask构建一个web站点

您所在的位置:网站首页 django使用模板来实现web站点数据管理 使用Flask构建一个web站点

使用Flask构建一个web站点

2023-11-29 04:57| 来源: 网络整理| 查看: 265

flask—website,是flask曾经的主站源码,使用flask制作,包含模版渲染,数据库操作,openID认证, 全文检索等功能。对于学习如何使用flask制作一个完备的web站点,很有参考价值,我们一起来学习它。Python学习资源点击免费领取

项目结构

flask-website已经归档封存,我们使用最后的版本8b08,包括如下几个模块:

模块 描述 run.py 启动脚本 websiteconfig.py 设置脚本 update-doc-searchindex.py 更新索引脚本 database.py 数据库模块 docs.py 索引文档模块 openid_auth.py oauth认证 search.py 搜素模块 utils.py 工具类 listings 一些展示栏 views 蓝图模块,包括社区,扩展,邮件列表,代码片段等 static 网站的静态资源 templates 网站的模版资源

flask-website的项目结构,可以作为flask的脚手架,按照这个目录规划构建自己的站点:

. ├── LICENSE ├── Makefile ├── README ├── flask_website │   ├── __init__.py │   ├── database.py │   ├── docs.py │   ├── flaskystyle.py │   ├── listings │   ├── openid_auth.py │   ├── search.py │   ├── static │   ├── templates │   ├── utils.py │   └── views ├── requirements.txt ├── run.py ├── update-doc-searchindex.py └── websiteconfig.py 复制代码 run.py作为项目的启动入口 requirements.txt描述项目的依赖包 flask_website是项目的主模块,里面包括:存放静态资源的static目录; 存放模版文件的templates目录;存放一些蓝图模块的views模块,使用这些蓝图构建网站的不同页面。 网站入口

网站的入口run.py代码很简单,导入app并运行:

from flask_website import app app.run(debug=True) 复制代码

app是基于flask,使用websiteconfig中的配置进行初始化

app = Flask(__name__) app.config.from_object('websiteconfig') 复制代码

app中设置了一些全局实现,比如404页面定义,全局用户,关闭db连接,和模版时间:

@app.errorhandler(404) def not_found(error): return render_template('404.html'), 404 @app.before_request def load_current_user(): g.user = User.query.filter_by(openid=session['openid']).first() \ if 'openid' in session else None @app.teardown_request def remove_db_session(exception): db_session.remove() @app.context_processor def current_year(): return {'current_year': datetime.utcnow().year} 复制代码

加载view部分使用了两种方式,第一种是使用flask的add_url_rule函数,设置了文档的搜索实现,这些url执行docs模块:

app.add_url_rule('/docs/', endpoint='docs.index', build_only=True) app.add_url_rule('/docs//', endpoint='docs.show', build_only=True) app.add_url_rule('/docs//.latex/Flask.pdf', endpoint='docs.pdf', build_only=True) 复制代码

第二种是使用flask的蓝图功能:

from flask_website.views import general from flask_website.views import community from flask_website.views import mailinglist from flask_website.views import snippets from flask_website.views import extensions app.register_blueprint(general.mod) app.register_blueprint(community.mod) app.register_blueprint(mailinglist.mod) app.register_blueprint(snippets.mod) app.register_blueprint(extensions.mod) 复制代码

最后app还定义了一些jinja模版的工具函数:

app.jinja_env.filters['datetimeformat'] = utils.format_datetime app.jinja_env.filters['dateformat'] = utils.format_date app.jinja_env.filters['timedeltaformat'] = utils.format_timedelta app.jinja_env.filters['displayopenid'] = utils.display_openid 复制代码 模版渲染

现在主流的站点都是采用前后端分离的结构,后端提供存粹的API,前端使用vue等构建。这种结构对于构建小型站点,会比较复杂,有牛刀杀鸡的感觉。对个人开发者,还需要学习更多的前端知识。而使用后端的模版渲染方式构建页面,是比较传统的方式,对小型站点比较实用。

本项目就是使用模版构建,在general蓝图中:

mod = Blueprint('general', __name__) @mod.route(&#


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3