Flask与Django对比

Flask与Django对比

  • Django vs Flask

  • 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("/")
def hello():
    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创建项目之后,目录里面没有任何文件,需要我们手动创建,是没有像Django一样组件分离,而对于需要把组件分离开的项目,Flask有blueprints。例如,你可以这样构建你的应用,将与用户有关的功能放在user.py里,把与销售相关的功能放在ecommerce.py里。

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

模版

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

<!-- view.html -->
<div class="top-bar row">
  <div class="col-md-10">
  <!-- more top bar things go here -->
  </div>
  {% if user %}
  <div class="col-md-2 whoami">
    You are logged in as {{ user.fullname }}
  </div>
  {% endif %}
</div>
{% for widget in inventory %}
    <li><a href="/widget/{{ widget.slug }}/">{{ widget.displayname }}</a></li>
{% endfor %}

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

模版简单对比

<!-- Django -->
<div class="categories">Categories: {{ post.categories|join:", " }}</div>

<!-- Jinja -->
<div class="categories">Categories: {{ post.categories|join(", ") }}</div>

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

  • Flask的Jinja模版 for-else-endfor
{% for item in inventory %}
    <div class="display-item">{{ item.render() }}</div>
{% else %}
    <div class="display-warn">
    <h3>No items found</h3>
    <p>Try another search, maybe?</p>
    </div>
{% endfor %}
  • Django模版 for-empty-endfor
{% for item in inventory %}
    <div class="display-item">{{ item.render }}</div>
{% empty %}
    <div class="display-warn">
    <h3>No items found</h3>
    <p>Try another search, maybe?</p>
    </div>
{% endfor %}

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

原文地址:https://www.cnblogs.com/crss/p/8532950.html

时间: 2024-10-07 11:39:11

Flask与Django对比的相关文章

Flask与Django哪个更好更实用呢?砖家是这么认为的

这一周我打算做一个 Flask 教程.本文先把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 —— 当然也很有趣! 注意:我只花了一个星期的时间在 Flask 上,而我已经用了三年的 Django. PS:也有很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转

flask,scrapy,django信号

简介 Django.Flask.scrapy都包含了一个“信号分配器”,使得当一些动作在框架的其他地方发生的时候,解耦的应用可以得到提醒. 通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者,这是特别有用的设计因为有些代码对某些事件是特别感兴趣的,比如删除动作. 下面,分别介绍一下三种信号的使用示例. Django信号 很多数情况下,我们需要在操作数据库之前或者之后做某些操作,比如说写个日志之类的,我们当然可以找到每一个sql语句,在其前后加一段代码, 但是,这不但浪费时间,

Django 对比get和filter区别

get 只能取出一条数据,如果满足条件的数据有多条,抛出异常 没有数据,也会抛出异常 filter 如果有数据,就返回QuerySet(类似于可以遍历的数组) 如果没有数据,返回empty(不会抛异常)

Flask基础(3):session、flash、特殊装饰器、蓝图、路由正则匹配、上下文管理 &amp; flask-session

Session: Flask 默认将 session 以加密的形式放到了浏览器的 cookie 中 Flask 的 session 就是一个字典,字典有什么方法 session 就有什么方法 flask session 原理:当请求刚进来时,flask会读取cookie中 session(配置文件中能改这个名称) 对应的值,将这个值解密并反序列化成为一个字典放入内存, 以便视图函数使用: 在视图函数中使用时,按照字典的方法使用: 当请求结束时,flask会读取内存中字典的值,进行序列化+加密,然

Django&amp;Flask区别

Flask Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现. Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Werkzeug 路由模块) Flask  自由.灵活,可扩展性强,第三方库的选择面广,开发者可以根据需求结合自己顺手的轮子 Flask  非常适用于小型网站,开发web服务的API,各方面性能均等于或优于Django Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-s

python常用web框架性能测试(django,flask,bottle,tornado)

测了一下django.flask.bottle.tornado 框架本身最简单的性能.对django的性能完全无语了. django.flask.bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok. tornado直接自己启动,其他内容一致. 测试软件为 siege,测试os为cenos6 64位,测试命令为: 1 siege -c 100 -r 100 -b http://127.0.0.1:5000/ django测试结果为: 1

Django框架与Flask框架的区别

Django与Flask的区别 Django: 轻量级web框架,只有一个内核,默认依赖两个外部库:Jinja2 模板引擎和 Werkzeug WSGI 工具集,自由,灵活,可扩展性强,开发者可以根据需求自己造轮子 适用于做小型网站以及web服务的API,开发大型网站无压力,架构需自行设计 与关系型数据库结合不弱于Django,而与非关系型数据库的结合远远优于Django Flask: 重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择应用上花费大量时间 自带ORM(Obje

Django框架和Flask框架

为什么使用框架? 说到框架呢,其实就像盖房子一样,需要先打地基,搭建好房子的骨架,然后再一块砖一块砖的叠上去. 如果开发一个网站不使用框架,就像盖房子一样,所需的原料都需要我们自己去生产,会需要非常久的时间,那么这样我们盖房子的效率就非常低 使用框架的好处是什么 大大提升开发的效率 让应用开发更加规范,拓展性强 让开发者更多的精力放在业务逻辑实现上面,而不是重复的在复杂的基础环境上面 Django框架 Django是一个重量级的框架,功能极其强大,是Python web框架的先驱,用户多,第三方

Django 的简单面试题

1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. #2.Django内置的ORM跟框架内的其他模块耦合程度高. # 应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利: # 理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修. #3.Django的卖点是超高的开