[心得]基于Flask技术的web博客开发总结
2016-10-16 15:15
393 查看
Flask主要依赖werkzeng和jinja2模板。
werkzeng提供route,debug和web服务,jinja2模板提供网页前端展示功能。
bootstrap是twitter的一个开源框架,它提供的用户界面的组件可以方便地在flask中复用。
表现层状态转移(Representational State Transfer,REST)架构
资源是 REST 架构方式的核心概念。在 REST 架构中,资源是程序中你要着重关注的事物。
开发完一个项目之后,可以用
来把开发中调用的依赖库dump到一个文件。
当部署时,
就能一下子把所依赖的库装好。
这个博客具备了用户认证,表单校验,用户权限数据库管理,关注关系设定,博客发布,个人主页等功能。
对于每一个功能,首先是从main/views.py下查找对应的路由,然后经过表单验证之后,跳转相应的页面。
这是蓝图blueprint,蓝图的作用是简化路由:
为了使用蓝图,需要采用工厂模式来推迟实例化app:
这是路由例子:
每一个页面经过jinja2模板的复用之后,可以提高前端编辑效率
总的来说,Flask核心很轻量,开发的功能主要是拿已有的一些模块组装在一起。
附录:MD编辑快捷操作备忘
斜体
引用
插入链接
插入代码
插入图片
提升标题
有序列表
无序列表
横线
撤销
重做
可以使用冒号来定义对齐方式:
项目1
项目2
定义 A
定义 B
项目3
定义 C
定义 D
定义D内容
通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
werkzeng提供route,debug和web服务,jinja2模板提供网页前端展示功能。
bootstrap是twitter的一个开源框架,它提供的用户界面的组件可以方便地在flask中复用。
表现层状态转移(Representational State Transfer,REST)架构
资源是 REST 架构方式的核心概念。在 REST 架构中,资源是程序中你要着重关注的事物。
开发完一个项目之后,可以用
pip freeze > requirements.txt
来把开发中调用的依赖库dump到一个文件。
当部署时,
pip install -r requirements.txt
就能一下子把所依赖的库装好。
这个博客具备了用户认证,表单校验,用户权限数据库管理,关注关系设定,博客发布,个人主页等功能。
对于每一个功能,首先是从main/views.py下查找对应的路由,然后经过表单验证之后,跳转相应的页面。
这是蓝图blueprint,蓝图的作用是简化路由:
from flask import Blueprint main = Blueprint('main', __name__) from . import views, errors
为了使用蓝图,需要采用工厂模式来推迟实例化app:
def create_app(config_name='default'): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) bootstrap.init_app(app) mail.init_app(app) moment.init_app(app) db.init_app(app) login_manager.init_app(app) pagedown.init_app(app) from .main import main as main_blueprint app.register_blueprint(main_blueprint) from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint, url_prefix='/auth') from .api_1_0 import api as api_1_0_blueprint app.register_blueprint(api_1_0_blueprint, url_prefix='/api/v1.0') return app
这是路由例子:
@main.route('/user/<username>') def user(username): user = User.query.filter_by(username).first() if user is None: abort(404) posts = user.posts.order_by(Post.timestamp.desc()).all() return render_template('user.html', user=user, posts=posts)
每一个页面经过jinja2模板的复用之后,可以提高前端编辑效率
{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% import "_macros.html" as macros %} {% block title %}topcoder - Post{% endblock %} {% block page_content %} {% include '_posts.html' %} <h4 id="comments">Comments</h4> {% if current_user.can(Permission.COMMENT) %} <div class="comment-form"> {{ wtf.quick_form(form) }} </div> {% endif %} {% include '_comments.html' %} {% if pagination %} <div class="pagination"> {{ macros.pagination_widget(pagination, '.post', fragment='#comments', id=posts[0].id) }} </div> {% endif %} {% endblock %}
总的来说,Flask核心很轻量,开发的功能主要是拿已有的一些模块组装在一起。
附录:MD编辑快捷操作备忘
快捷键
加粗Ctrl + B
斜体
Ctrl + I
引用
Ctrl + Q
插入链接
Ctrl + L
插入代码
Ctrl + K
插入图片
Ctrl + G
提升标题
Ctrl + H
有序列表
Ctrl + O
无序列表
Ctrl + U
横线
Ctrl + R
撤销
Ctrl + Z
重做
Ctrl + Y
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
Markdown Extra 定义列表语法:项目1
项目2
定义 A
定义 B
项目3
定义 C
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:python
通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
相关文章推荐
- 基于ASP.NET AJAX低级动画技术开发Web 2.0应用程序
- 基于java技术的软件开发架构总结
- webkit webApp 开发技术要点总结
- Trufun WebRCP基于html5技术的GWT开发框架介绍
- 【特别推荐】学习 Web 开发技术的16个最佳教程网站和博客
- web报表开发技术专题八:总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 转载基于flex4技术从零开发flex博客系统 : 1 开发环境配置与hello world
- Web开发中的缓存技术之二:基于访问时间的简单缓存
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 技术总结—基于SSH的项目开发
- 基于AJAX技术开发Web电子邮件客户端之 编码篇
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 一款基于浏览器的云技术在线Web开发IDE—CodeRun Studio