2018-01-26

Django和Flask框架之间的差别:

        Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。

        Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。

        Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中。

入门引导

        Flask的Hello World应用的代码是最简单的,只用在一个Python文件里码7行代码就够了。

from flask import Flask 

app = Flask(__name__)

@app.route("/")defhello():

        return"Hello World!"

if__name__ =="__main__":    

        app.run()

上面代码就已经是一个简单的 web 应用,从上面的 Hello World 应用的特点来看,一个没什么Python web开发经验的人就可以很快的上手开始撸代码。

项目区别

Django 创建项目和创建应用

django-admin startproject hello_django

django-admin startapp howdy

其目录结构: 

        Django把一个项目分成各自独立的应用,而Flask认为一个项目应该是一个包含一些视图和模型的单个应用。当然我们也可以在Flask里复制出像Django那样的项目结构。

模版

Django的模版大家都很熟悉,我们举一个简单的例子

{% if user %}

You are logged in as

 {{ user.fullname }}

{% endif %}

{% for widget in inventory %}

{{ widget.displayname }}
{% endfor %}

Flask默认使用一个受Django启发而发展起来的名为Jinja2的模板,其实,所有上面的Django模板的例子在Jinja2里也是好使的。

模版简单对比


Categories: {{ post.categories|join:", " }}


Categories: {{ post.categories|join(", ") }}

在Jinja的模板语言里,可以把任何数量的参数传给过滤器,因为Jinja像调用一个Python函数的方式来看待它,用圆括号来封装参数。Django使用冒号来分隔过滤器名和参数,这样就只能传递一个参数了。

Flask的Jinja模版

 for-else-endfor

{% for item in inventory %}{{ item.render() }}{% else %}

Try another search, maybe?

{% endfor %}

Django模版

 for-empty-endfor

{% for item in inventory %}{{ item.render }}{% empty %}

Try another search, maybe?

{% endfor %}

除了上述的语法区别,Flask还提供了很多特有的上下文变量(url_for,get_flashed_messages()等)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Flask框架的诞生: Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于W...
    Python威少阅读 1,202评论 0 0
  • 本文主要内容汇总自2018.1.18日刘润在得到APP的直播分享,即容易理解又能满足一些“干货”渴求者,所以本人客...
    李韶华阅读 5,045评论 1 3
  • 印象笔记模板 1、建立“晨间日记”笔记本 2、每天点击右下角…复制笔记,改标题 3、建立日期标签,如0101 今天...
    达薇知心姐姐阅读 1,456评论 0 1
  • 这两天实在太忙了,大部份的时间都在包货理货,没有好好陪陪孩子,每次一忙起来,没有时间,没有自我,就很容易陷入焦虑,...
    清舞飞扬ing阅读 1,131评论 0 0
  • 争辩中,最理想的结局是:让自己的对手心悦诚服,接受和认可自己的想法,并成为同一阵营的战友。因此我们不仅要运用缜密的...
    周巧的文字时光阅读 1,358评论 0 0