浅谈flask框架以及Jinja模板与Jquery合作的奇妙之处
前两天接手了一个开源项目,使用的是flask框架,也就是以python作为后端服务器的一款框架,功能类似于django,我没有用过django这里不做过多的评价,下面我会找找说的比较好的对比供大家参考。
1.我对这个框架的大概理解
值得一提的是我之前从未接触过真正后端服务器,虽然在学JSP,用过PHP,但是仅仅停留在能大概看懂的地步,还是写不出来。但是在我接受这个框架的时候,其简洁以及对于新手的友好大大吸引了我,相比于JSP大量的配置文件,再对比Django庞大的体积,flask非常简易,对于敏捷开发有着绝对的优势,而其前端的模板和Django一模一样,这代表着假如是Django的使用者的话,入手flask一定非非常快,先不说别的,flask的hello world只有不到10行代码,先贴到这里:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
不难看出,对比Django大量的文件来说,开发简易的应用使用flask速度之快,当然flask没有像Django那样清晰明了的目录结构,其依赖关系完全靠import注册关系导入,不过我们也可以模仿Django的目录结构建立一个,这个问题不大。
2. 框架大致使用手册
首先需要一个入口类似上面的,然后需要blueprint这样一个组件来注册页面,这个注册的页面里面包含这个页面的链接,假设我的主链接是lyp123.com然后在A.py里面写入A_blueprint = Blueprint('A', name, url_prefix='/A')表示链接到lyp123.com/A,然后选择默认返回一个页面,这个页面由带有参数的模板制成,类似下面这种:
3.模板与JQuery结合的妙用
提到DOM数据的替换就不得不提到JQuery,在这个模板里面可以直接替换位于网页里面除了style,js标签里面所有的内容,而且可以将两个网页拼接,可以模块化网页内容,比如说某个页面下面哟有许多内容,就可以建立一个基础,就是大致框架,然后下面的东西可以通过继承这个模板然后显示这个网页的时候会默认将这个模板加载出来。 说到妙用,就得说我上次要做的一个需求,就是给一个表格添加一个过滤器,当选中过滤器的时候,其中一些标签应该隐藏起来当使用纯模板的时候,无法对checkbox做实时监控,js也做不到这一点,只用JQuery的话无法从后台参数这种获得有效内容,而且令人遗憾的是模板不能往js里面写,我本来想在JQuery里面检测模板输出内容然后做过滤,但是这是一个表格,没有办法分开,最后,我y用模板做了个if,给需要标记的项添加一个类标记,然后在JQuery里面对这个特别类添加另外的类或者删除类,这样就做到了这样的目标,不得不说,这两个各有优点,互补,几乎等于无敌吖! PS:这里貌似用ajax搭配JQuery或许会更简单一些
4.Django与Flask对比
(本版块转载自https://blog.csdn.net/xiaochendefendoushi/article/details/80994152)
(1)Flask
- Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过
- Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
- 入门简单,即便没有多少web开发经验,也能很快做出网站
- 非常适用于小型网站
- 非常适用于开发web服务的API
- 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
- 各方面性能均等于或优于Django
- Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库
- Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一
- Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
- Flask比Django更加Pythonic,与Python的philosophy更加吻合
(2)Django
- Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高
- Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉
- Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
- Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja
- Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山
- Django目前支持Jinja等非官方模板引擎
- Django自带的数据库管理app好评如潮
- Django非常适合企业级网站的开发:快速、靠谱、稳定
- Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭
- Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植
- Django上手也比较容易,开发文档详细、完善,相关资料丰富