django和flask的區別
Flask與Django的區別
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的模版大家都很熟悉,我們舉一個簡單的例子
Flask預設使用一個受Django啟發而發展起來的名為Jinja2的模板,其實,所有上面的Django模板的例子在Jinja2裡也是好使的。
模版簡單對比
<!--Django--> <div class="categories">Categories:{{ post.categories|join:"," }}</div> <!--Jinja2--> <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()等).
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2836963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Flask框架和Django框架有什麼區別?Flask框架Django
- Python學習之Django和Flask框架有什麼區別?PythonDjangoFlask框架
- Django和Flask框架有什麼區別?Python學習分享DjangoFlask框架Python
- Flask框架和Django框架有什麼區別?詳細分析!Flask框架Django
- Django的Project和App的區別DjangoProjectAPP
- django classonlymethod 和 python classmethod的區別DjangoPythonSSM
- flask中使用jsonify和json.dumps的區別FlaskJSON
- django版本區別Django
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ||和??的區別
- /*和/**的區別
- Python學習之Django和其他Python框架有什麼區別?PythonDjango框架
- Django框架,Flask框架和Tornado框架各有什麼優缺點Django框架Flask
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- Django、Flask、Tornado的對比?Python三大主流框架!DjangoFlaskPython框架
- 和區別
- springmvc和springboot的區別SpringMVCSpring Boot
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別
- WebApi和MVC的區別WebAPIMVC
- GET和POST的區別?
- ArrayList和LinkedList的區別
- WBS和TASK的區別?
- JavaScript中for in 和for of的區別JavaScript
- innerText 和 textContent 的區別?
- var 和 let 的區別