📜  Flask vs Django

📅  最后修改于: 2021-01-02 04:38:10             🧑  作者: Mango

Flask vs.Django

Django和Flask是Python的Web框架。众所周知, Python是最通用的编程语言,它提供了广泛的Web框架。 Web开发人员可以选择这些框架。程序员可以灵活地利用全栈Python Web框架。它增强了复杂Web应用程序的开发。 Python还提供了一个选项,可以选择微型和轻量级的Python Web框架来构建简单的Web应用程序,而无需花费额外的时间和精力。

Django和Flask都是Python的流行框架。每个框架都有其独特的质量,我们可以根据项目要求使用它。 Django是一个完整的Web框架,用于大型和复杂的Web应用程序,而Flask是一个轻量级的可扩展Web框架。 Django附带了电池内置方法,并提供了最惊人的功能。

它是基于两个POCO项目开发的。第一个是WSGI(Web服务器网关接口)工具箱Jinja2模板引擎。让我们看一下Django和flask的简要介绍。

什么是Django?

Django的正式定义是:“ Django使您更容易以更少的代码更快地构建更好的Web应用程序” 。它用作全栈式Web框架,它自己执行许多任务。 SQLite数据库已经内置在此框架中。

使用Django的公司

以下是使用Django作为框架的巨型公司:

  • Instagram的
  • Pinterest的
  • 乌迪米
  • Coursera
  • 扎皮尔

什么是烧瓶?

Flask是用Python编程语言编写的微型Web框架。它提供了灵活性,简单性和细粒度的控制。 “微型”一词意味着Flask致力于保持核心的可扩展性,但直截了当。完全取决于烧瓶的使用;它不会为您决定,例如使用哪个数据库。它确定使用哪种模板引擎。

使用Flask的公司:

  • 网飞
  • Lyft
  • Reddit
  • 齐洛
  • MailGui

Flask和Django之间的比较

Web开发人员需要了解这些框架之间的区别,因为这两个框架都有各自的功能。让我们基于以下几点来看一下这些框架之间的区别:

基本信息

Flask由Adrian HolovatySimon Willison于2010年发布。它是通过使用大约10000行源代码制成的。它用于开发简单的Web应用程序,微服务和“无服务器”平台。它提供URL路由,请求和错误处理以及开发服务器。

Django于2005年发布,使用24万行源代码制作而成。开发更复杂的Web应用程序所需的时间和精力更少。它拥有一个建立良好的庞大社区,致力于增强框架功能。

功能性

Django是一个全栈的Python Web框架,它遵循包含电池的方法。这种方法使Django易于为Web开发人员创建基本的Web开发任务,例如用户身份验证,URL路由和数据库模式迁移。 Django还提供了一个内置的模板引擎,ORM系统和自举工具,这对自定义Web开发非常有帮助。

Flask是一个简单,轻巧且易于使用的框架。它包含的内置功能少于Django。但是,它为Web开发人员提供了便利,使其可以保持Web应用程序核心的可扩展性和直接性。

数据库

Flask没有数据库层,没有ORM,支持NoSQL ,通过SQLAlchemy执行数据库操作。

Django提供了一个ORM系统来执行标准的数据库操作,而无需编写冗长的SQL查询。

安全

Flask具有针对多种常见威胁(例如CSRF,XSS和SQL注入)的内置安全性。

与其他Web框架相比,Django更安全。它包含一个较小的代码库,因此不太可能遭到未经授权的人攻击。为了使其更加安全,需要评估和监视第三方库和扩展。

灵活性

Django遵循电池包含方法,该方法可帮助开发人员在不使用第三方工具和库的情况下构建各种Web应用程序。但是开发人员无法更改Django提供的模块。我们必须使用这些可用的库来构建Web应用程序。

另一方面,Flask是一个微型且可扩展的Web框架。通过使用Web开发工具和库,它可以根据其需求灵活地开发Web应用程序。 Flask由于其简单且可自定义的体系结构,因此是初学者的首选框架。

内置自举工具

Django随附名为–django-admin的内置引导程序工具。无需使用任何外部输入,开发人员即可轻松构建应用程序。我们可以将一个项目分为几个应用程序。开发人员可以使用django-admin在项目内创建一个新应用程序,而Flask不包含内置的引导程序工具。

速度

Django和Flask的工作速度相同。编程语言或Web框架决不对速度缓慢负责。相反,由于数据库查询,缺少缓存或不使用CDN进行前端断言,任何网站都可能变慢。

特征

Django的

  • 它具有强大的文档。
  • 世界各地的广泛社区。
  • 它由内置管理员组成。
  • 异步功能。
  • 它比其他框架更安全。

烧瓶

  • 它是一个轻量级且可扩展的WSGI Web框架。
  • 它提供了一个非关系数据库。
  • 它具有轻量级的代码库。

Hello World程序比较

让我们使用这两个框架在网页上显示Hello World。

烧瓶

首先,使用pip install flask命令安装flask,它将下载烧瓶中的整个配置,并创建一个新文件hello_flask.py。该程序如下:

from flask import Flask, escape, request

app = Flask(__name__)

@app.route('/')
def hello():
    name = request.args.get("name", "World")
    return f'Hello, {escape(name)}!'

然后从命令行启动Flask服务器:

$ env FLASK_APP=hello_flask.py flask run
* Serving Flask app "hello_flask.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0. 1:5000/ (Press CTRL+C to quit)

单击上面的链接,它将在网页上printHello World。

Django的

首先,使用pip install django命令安装django。使用以下代码创建hello_django.py:

from django.conf import settings
from django.core.handlers.wsgi import WSGIHandler
from django.core.management import execute_from_command_line
from django.http import HttpResponse
from django.urls import path

settings.configure(
    ROOT_URLCONF=__name__,
    DEBUG=True,
)

def hello_world(request):
    return HttpResponse("Hello, Django!")

urlpatterns = [
    path('', hello_world)
]

application = WSGIHandler()

if __name__ == "__main__":
    execute_from_command_line()

在终端中输入以下命令:

python hello_django.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
December 17, 2019 - 13:48:54
Django version 3.0, using settings None
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

当您单击以上链接时,它将在网页上显示Hello World。