新聞中心
概括
Django功能大而全,F(xiàn)lask只包含基本的配置 Django的一站式解決的思路,能讓開發(fā)者不用在開發(fā)之前就在選擇應(yīng)用的基礎(chǔ)設(shè)施上花費(fèi)大量時(shí)間。Django有模板,表單,路由,認(rèn)證,基本的數(shù)據(jù)庫管理等等內(nèi)建功能。與之相反,F(xiàn)lask只是一個(gè)內(nèi)核,默認(rèn)依賴于兩個(gè)外部庫: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以擴(kuò)展的形式進(jìn)行嵌入使用。

目前成都創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、永昌網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Flask 比 Django 更靈活 用Flask來構(gòu)建應(yīng)用之前,選擇組件的時(shí)候會給開發(fā)者帶來更多的靈活性 ,可能有的應(yīng)用場景不適合使用一個(gè)標(biāo)準(zhǔn)的ORM(Object-Relational Mapping 對象關(guān)聯(lián)映射),或者需要與不同的工作流和模板系統(tǒng)交互。
Flask 在 Django 之后發(fā)布,現(xiàn)階段有大量的插件和擴(kuò)展?jié)M足不同需要 Django發(fā)布于2005年,F(xiàn)lask創(chuàng)始于2010年年中。
項(xiàng)目區(qū)別
Django 創(chuàng)建項(xiàng)目和創(chuàng)建應(yīng)用
django-admin startproject hello_django django-admin startapp howdy12
其目錄結(jié)構(gòu): 默認(rèn)情況下,Django項(xiàng)目和應(yīng)用創(chuàng)建好了之后,只包含空的模型和模板文件,而Flask創(chuàng)建項(xiàng)目之后,目錄里面沒有任何文件,需要我們手動創(chuàng)建,是沒有像Django一樣組件分離,而對于需要把組件分離開的項(xiàng)目,F(xiàn)lask有blueprints。
例如,你可以這樣構(gòu)建你的應(yīng)用,將與用戶有關(guān)的功能放在user.py里,把與銷售相關(guān)的功能放在ecommerce.py里。
Django把一個(gè)項(xiàng)目分成各自獨(dú)立的應(yīng)用,而Flask認(rèn)為一個(gè)項(xiàng)目應(yīng)該是一個(gè)包含一些視圖和模型的單個(gè)應(yīng)用。當(dāng)然我們也可以在Flask里復(fù)制出像Django那樣的項(xiàng)目結(jié)構(gòu)。
模板
舉一個(gè) Django 模板的例子
{% for widget in inventory %}{% if user %}You are logged in as {{ user.fullname }}{% endif %}
Flask默認(rèn)使用一個(gè)受Django啟發(fā)而發(fā)展起來的名為Jinja2的模板,其實(shí),所有上面的Django模板的例子在Jinja2里也是好使的。
模板簡單對比
Categories: {{ post.categories|join:", " }}Categories: {{ post.categories|join(", ") }}12345
在Jinja的模板語言里,可以把任何數(shù)量的參數(shù)傳給過濾器,因?yàn)镴inja像調(diào)用一個(gè)Python函數(shù)的方式來看待它,用圓括號來封裝參數(shù)。Django使用冒號來分隔過濾器名和參數(shù),這樣就只能傳遞一個(gè)參數(shù)了。
Flask的Jinja模版 for-else-endfor
{% for item in inventory %}
{{ item.render() }}
{% else %}
No items found
Try another search, maybe?
{% endfor %}12345678Django模版 for-empty-endfor
{% for item in inventory %}
{{ item.render }}
{% empty %}
No items found
Try another search, maybe?
{% endfor %}12345678除了上述的語法區(qū)別,F(xiàn)lask還提供了很多特有的上下文變量(url_for,get_flashed_messages()等)
更多python相關(guān)文章請關(guān)注python自學(xué)網(wǎng)。
網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:Flask與Django對比
瀏覽路徑:http://www.fisionsoft.com.cn/article/cdsjdoi.html


咨詢
建站咨詢
