您好,登錄后才能下訂單哦!
小編給大家分享一下Flask與Django對比有什么區別,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
概括
Django功能大而全,Flask只包含基本的配置 Django的一站式解決的思路,能讓開發者不用在開發之前就在選擇應用的基礎設施上花費大量時間。Django有模板,表單,路由,認證,基本的數據庫管理等等內建功能。與之相反,Flask只是一個內核,默認依賴于兩個外部庫: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以擴展的形式進行嵌入使用。
Flask 比 Django 更靈活 用Flask來構建應用之前,選擇組件的時候會給開發者帶來更多的靈活性 ,可能有的應用場景不適合使用一個標準的ORM(Object-Relational Mapping 對象關聯映射),或者需要與不同的工作流和模板系統交互。
Flask 在 Django 之后發布,現階段有大量的插件和擴展滿足不同需要 Django發布于2005年,Flask創始于2010年年中。
Django 創建項目和創建應用
django-admin startproject hello_django django-admin startapp howdy12
其目錄結構: 默認情況下,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 %}1234567891011121314
Flask默認使用一個受Django啟發而發展起來的名為Jinja2的模板,其實,所有上面的Django模板的例子在Jinja2里也是好使的。
<!-- Django --> <div class="categories">Categories: {{ post.categories|join:", " }}</div> <!-- Jinja --> <div class="categories">Categories: {{ post.categories|join(", ") }}</div>12345
在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"> <h4>No items found</h4> <p>Try another search, maybe?</p> </div> {% endfor %}12345678
Django模版 for-empty-endfor
{% for item in inventory %} <div class="display-item">{{ item.render }}</div> {% empty %} <div class="display-warn"> <h4>No items found</h4> <p>Try another search, maybe?</p> </div> {% endfor %}12345678
除了上述的語法區別,Flask還提供了很多特有的上下文變量(url_for,get_flashed_messages()等)
看完了這篇文章,相信你對Flask與Django對比有什么區別有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。