日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django restframework 下载文件_【技术选型】Django还是Flask?这是个问题!

發(fā)布時間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django restframework 下载文件_【技术选型】Django还是Flask?这是个问题! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Django和Flask,是Python語言在WEB開發(fā)領(lǐng)域中占據(jù)了半壁江山的兩個框架。在我們實際開發(fā)過程中,如何從這兩者之間二選一呢?

01

半壁江山的兩個WEB框架

在2019年P(guān)ython官方年度報告中,Django和Flask兩個框架的使用率都是遠遠高于其它WEB框架的:

在Github上這兩者的stars數(shù)量也幾乎是平分秋色。真是堪稱Python在WEB開發(fā)領(lǐng)域的兩大扛把子。

于是,甜蜜的煩惱開始了。兩者框架之間,到底該選哪一個呢?

02

不同的設(shè)計理念

雖然Django和Flask都是WEB開發(fā)框架,但是它們的設(shè)計理念是截然不同的。我們從兩者的官方簡介中就可以看出端倪。

Django的官方簡介是:

The Web framework for perfectionists with deadlines.

這句話,我把它粗暴的意譯了一下,發(fā)現(xiàn)簡直就是霸氣側(cè)漏啊:

”如果你(跟作者本人一樣),是一個有拖延癥(項目總是拖到Deadline之前才交付)的完美主義者(又拖延癥又完美主義,這還有救嗎?),那么你就該用Django!”

Flask的官方簡介,則低調(diào)內(nèi)涵的多:

The Python micro framework for building web applications.

直譯就是:“用于創(chuàng)建網(wǎng)頁應(yīng)用的Python框架“。

重點在一個””字。

綜上所述,Django框架,走的是大而全的路線。而Flask框架,走得是小而美的路線。

03

想吃法式大餐還是自助火鍋?

為了幫助技術(shù)小白和新人理解,我再以一個吃貨們喜聞樂見的例子類比一下。

假如你去吃飯,有兩個餐廳可供你選擇,一個是Django餐廳,一個是Flask餐廳。

Django餐廳提供的是法式大餐,有一套固定的套餐體系,從開胃菜、主菜到飯后點心,一應(yīng)俱全。如果你要吃,就得按Django餐廳的規(guī)矩來。而且Django餐廳服務(wù)到位,你就乖乖坐著,各樣的菜直接端你面前,動筷子張嘴就行了。

Flask餐廳則提供的是自助火鍋的服務(wù),給你配上一個基本的鍋底,想吃什么菜、配什么醬料的,得自己去拿,自己去配。而且各種菜式品種豐富,一應(yīng)俱全,想吃啥,自己取來煮就行。而且不像Django餐廳條條框框那么多,你可以發(fā)揮自己的想象力,進行各種食材的搭配,如果你愿意,來個荔枝蘸醬油也是可以的。

04

牛刀小試:Hello World

類比完了,我們再來結(jié)合實際的框架細節(jié)來分析下,首先我們完成一個最簡單的在頁面上顯示Hello World。

使用flask

  • ? 安裝flask, pip install flask

  • ??創(chuàng)建app.py文件,并在其中寫入如下代碼:

  • from flask import Flask app = Flask(__name__)? @app.route('/') def hello_world():?????return?'Hello?World!' if __name__ == '__main__': app.run()
  • 然后運行服務(wù)即可。

    這個過程非常的簡單。

    如果是使用django的話,就要復(fù)雜一些:

    1. 安裝django? pip install django

    2. 創(chuàng)建項目,django-admin startproject myproject

    3. 創(chuàng)建項目子應(yīng)用,python manage.py startapp myapp

    4. 在myapp應(yīng)用所在目錄中的views.py文件中,添加如下代碼

    from django.http import HttpResponse def index(request): return HttpResponse("Hello World!")

    5.??在mybook文件夾下的urls.py文件中添加路由規(guī)則

    from django.urls import pathfrom?myapp.views?import?index urlpatterns = [ path('', index, name='index') ]

    然后運行服務(wù)即可

    對比上述兩個過程,我們可以發(fā)現(xiàn),flask實現(xiàn)一個WEB應(yīng)用會非常的直觀與簡單。

    而Django的話涉及到的步驟會比較多,必須要按照框架自身的要求一步步的來進行。

    但是Django這樣做也是有好處的,因為工程項目結(jié)構(gòu)很清晰,適合開發(fā)大中型項目。

    05

    如果要使用ORM

    我們再看一個更加復(fù)雜的例子,通過這個例子,我們可以更加清晰的體會出,Django與flask的區(qū)別:如果想在項目中使用ORM,flask和django該如何做呢。

    首先來看下flask,flask中是沒有集成ORM的,如果需要使用這樣的功能,需要手動下載拓展包,并寫一些膠水代碼來實現(xiàn)。步驟如下:

    1.下載flask的拓展orm包flask-sqlalchemy:pip install flask-sqlalchemy

    2. 配置數(shù)據(jù)庫(以sqlite數(shù)據(jù)庫為例),在之前創(chuàng)建的app.py文件中加入如下代碼:

    from flask_sqlalchemy import SQLAlchemybasedir = os.path.abspath(os.path.dirname(__file__))app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///' + os.path.join(basedir, 'data.sqlite3') + '?check_same_thread=False'app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    3.????? 獲取SQLAlchemy實例

    db = SQLAlchemy(app)

    4.????? 創(chuàng)建model模型類,在app.py文件中加入如下代碼:

    class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) def __repr__(self): return '' % self.username def __str__(self): return self.username

    5.????? 讓 Flask-SQLAlchemy 根據(jù)模型類創(chuàng)建數(shù)據(jù)庫與表,在控制臺輸入如下命令:

    flask shell>>> from app import db>>> db.create_all()

    6.????? 如果想對數(shù)據(jù)庫執(zhí)行遷移操作,需要再安裝一個Flask-Migrate 擴展:pip install flask-migrate?

    7.????? 初始化 Flask-Migrate,在app.py文件中加入如下代碼:

    from flask_migrate import Migratemigrate = Migrate(app, db)

    8.????? 然后控制臺執(zhí)行命令:

    flask db init這個命令會創(chuàng)建 migrations 目錄,所有遷移腳本都存放在這里。

    9.????? 接下來,就可以控制臺使用flask db migrate命令,根據(jù)模型的變化,生成遷移腳本,執(zhí)行 flask db upgrade 命令,把遷移應(yīng)用到數(shù)據(jù)庫中。

    相比flask這樣繁多的步驟,在Django中使用ORM則要輕松太多了!Django中直接內(nèi)置了Django ORM模塊,不需要額外下載其它的包,直接按照下述步驟就可以:

    1. 將myapp應(yīng)用注冊到項目myproject中:

    在myproject文件夾下settings.py文件中,找到INSTALLED_APPS這個配置項,它是一個列表,在最后加一項:

    myapp.?apps.MyappConfig

    2.??在myapp下的models文件中寫model模型類即可,例如

    from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=30) pub_date = models.DateField() def __str__(self): return self.title

    ?3. 在控制臺輸入命令:

    python manage.py makemigrations

    生成遷移腳本

    python manage.py migrate

    執(zhí)行遷移腳本

    搞定!

    對比這樣兩個步驟發(fā)現(xiàn),Django中將一些WEB開發(fā)中常用的模塊如ORM、用戶認證、后臺管理等等模塊都進行了內(nèi)置,使用起來及其的方便。而flask要使用這些拓展模塊,則需要自己安裝、配置、寫更多的膠水代碼。

    06

    結(jié)論

    了解了這么多,最后得出我們的結(jié)論:

    1. 從項目規(guī)模考慮

    ????如果你只是想開發(fā)一些簡單的展示頁面,不涉及到復(fù)雜的數(shù)據(jù)結(jié)構(gòu),交互邏輯,可以優(yōu)先考慮使用flask。

    ????反之如果你想快速開發(fā)一個大的應(yīng)用系統(tǒng)(比如新聞類網(wǎng)站、商城、ERP等),那么建議你選擇Django,常用的WEB功能它都有,很多想不到的功能它也有。

    2.?從項目使用的數(shù)據(jù)庫類型考慮

    ????如果你的項目使用的是關(guān)系型數(shù)據(jù)庫,并且要使用ORM,建議優(yōu)先考慮Django,因為Django中的ORM實在太太太好用了。???如果你決定在項目中使用非關(guān)系型數(shù)據(jù)庫,如mongodb的話,Django ORM就無英雄用武之地了,可以考慮使用Flask。

    3.??從項目時間考慮

    ?????如果你有大把的時間,抱著學(xué)習(xí)的目的,想把Python web開發(fā)WSGI協(xié)議原理以及實現(xiàn)過程搞清楚,或者自己喜歡DIY,自己定制組件、是個編碼狂魔,那么flask會毫無疑問的滿足你的需求。? ? ? ?

    ????但是如果你需要在短時間內(nèi),進行高質(zhì)量的WEB項目的交付,那么人生苦短,還是用Django吧。

    END

    總結(jié)

    以上是生活随笔為你收集整理的django restframework 下载文件_【技术选型】Django还是Flask?这是个问题!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。