Django框架是什麼?

Django在新一代的Web框架中非常出色,為什么這么說呢?
為回答該問題,讓我們考慮一下不使用框架設計Python網頁應用程序的情形.貫穿整本書,我們多次展示不使用框架實現網站基本功能的方法,讓讀者認識到框架開發的方便,(不使用框架,更多情況是沒有合適的框架可用. 最重要的是,理解實現的來龍去脈會使你成為一個優秀的web開發者)
使用Python開發Web,最簡單,原始和直接的辦法是使用CGI標準,在1998年這種方式很流行.現在從應用角度解釋它是如何工作: 首先做一個Python腳本,輸出HTML代碼,然后保存成.cgi擴展名的文件,通過瀏覽器訪問此文件,就是這樣.
如下示例,用Python CGI腳本顯示數據庫中最新出版的10本書:不用關心語法細節,僅僅感覺一下基本實現的方法:

#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html\n"
print "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall():print "<li>%s</li>" % row[0]
print "</ul>"
print "</body></html>"
connection.close()

首先,用戶請求CGI,腳本代碼打印Content-Type行,后面跟著換行.再接下來是一些HTML的起始標簽,然后連接數據庫并執行一些查詢操作,獲取最新的十本書.在遍歷這些書的同時,生成一個書名的HTML列表項.最后,輸出HTML的結束標簽并且關閉數據庫連接.

像這樣的一次性的動態頁面,從頭寫起的方法并非一定不好.其中一點:這些代碼簡單易懂,就算是一個初起步的 開發者都能讀明白這16行的Python的代碼,而且這些代碼從頭到尾做了什么都能了解得一清二楚.不需要學習額外的背景知識,沒有額外的代碼需要去了解. 同樣,也易于部署這16行代碼,只需要將它保存為一個latestbooks.cgi的文件,上傳到網絡服務器上,通過瀏覽器訪問即可.

盡管實現很簡單,還是暴露了一些問題和不便的地方.問你自己這幾個問題:
(1)應用中有多處需要連接數據庫會怎樣呢?每個獨立的CGI腳本,不應該重復寫數據庫連接的代碼.比較實用的辦法是寫一個共享函數,可被多個代碼調用.
(2)一個開發人員確實需要去關注如何輸出Content-Type以及完成所有操作后去關閉數據庫么?此類問題只會降低開發人員的工作效率,增加犯錯誤的幾率. 那些初始化和釋放相關的工作應該交給一些通用的框架來完成.
(3)如果這樣的代碼被重用到一個復合的環境中會發生什么?每個頁面都分別對應獨立的數據庫和密碼嗎?
(4)如果一個Web設計師,完全沒有Python開發經驗,但是又需要重新設計頁面的話,又將發生什么呢?一個字符寫錯了,可能導致整個應用崩潰. 理想的情況是,頁面顯示的邏輯與從數據庫中讀取書本記錄分隔開,這樣Web設計師的重新設計不會影響到之前的業務邏輯.
以上正是Web框架致力于解決的問題. Web框架為應用程序提供了一套程序框架,這樣你可以專注于編寫清晰、易維護的代碼,而無需從頭做起.簡單來說,這就是Django所能做的.


轉載于:https://www.cnblogs.com/apollo1616/articles/9893280.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388067.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

存款驚人_如何使您的圖快速美麗驚人

存款驚人So, you just finished retrieving, processing, and analyzing your data. You grab your data and you decide to graph it so you can show others your findings. You click ‘graph’ and……因此&#xff0c;您剛剛完成了數據的檢索&#xff0c;處理和分析。 您獲…

pytest自動化6:pytest.mark.parametrize裝飾器--測試用例參數化

前言&#xff1a;pytest.mark.parametrize裝飾器可以實現測試用例參數化。 parametrizing 1. 下面是一個簡單是實例&#xff0c;檢查一定的輸入和期望輸出測試功能的典型例子 2. 標記單個測試實例為失敗&#xff0c;例如使用內置的mark.xfail&#xff0c;則跳過該用例不執行直…

基于easyui開發Web版Activiti流程定制器詳解(六)——Draw2d詳解(二)

&#xfeff;&#xfeff;上一篇我們介紹了Draw2d整體結構&#xff0c;展示了組件類關系圖&#xff0c;其中比較重要的類有Node、Canvas、Command、Port、Connection等&#xff0c;這篇將進一步介紹Draw2d如何使用以及如何擴展。 進入主題&#xff1a; 詳細介紹一下Draw2d中幾個…

c#中ReadLine,Read,ReadKey的區別

Console.Read()、Console.ReadLine() 相同點&#xff1a; 1.兩者都是用于輸入的函數。 不同點&#xff1a; 1. Read只能讀取一個字符&#xff0c;ReadLine可以讀取一個字符串 如 Read讀取A和AASDGU的返回值都是一樣的 都為A的ASCII值&#xff0c;對于后續的ASDGU不理會。 而Rea…

Ubuntu16.04 開啟多個終端,一個終端多個小窗口

Ubuntu16.04 開啟多個終端&#xff0c;一個終端多個小窗口 CtrlShift T,一個終端開啟多個小終端 CtrlAlt T 開啟多個終端 posted on 2019-03-15 11:26 _孤城 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/liuweijie/p/10535904.html

敏捷 橄欖球運動_澳大利亞橄欖球迷的研究聲稱南非裁判的偏見被證明是錯誤的

敏捷 橄欖球運動In February 2020, an Australian rugby fan produced a study, claiming to show how South African rugby referees were exhibiting favorable bias towards South African home teams. The study did not consider how other countries’ referees treat So…

activiti 部署流程圖后中文亂碼

Activiti工作流引擎使用 1.簡單介工作流引擎與Activiti 對于工作流引擎的解釋請參考百度百科&#xff1a;工作流引擎 1.1 我與工作流引擎 在第一家公司工作的時候主要任務就是開發OA系統&#xff0c;當然基本都是有工作流的支持&#xff0c;不過當時使用的工作流引擎是公司一些…

Luogu 4755 Beautiful Pair

分治 主席樹。 設$solve(l, r)$表示當前處理到$[l, r]$區間的情況&#xff0c;我們可以找到$[l, r]$中最大的一個數的位置$mid$&#xff0c;然后掃一半區間計算一下這個區間的答案。 注意&#xff0c;這時候左半邊是$[l, mid]$&#xff0c;而右區間是$[mid, r]$&#xff0c;我…

網絡傳播動力學_通過簡單的規則傳播動力

網絡傳播動力學When a single drop of paint is dropped on a surface the amount of space that the drop will cover depends both on time and space. A short amount of time will no be enough for the drop to cover a greater area, and a small surface will bound the…

【左偏樹】【P3261】 [JLOI2015]城池攻占

Description 小銘銘最近獲得了一副新的桌游&#xff0c;游戲中需要用 m 個騎士攻占 n 個城池。這 n 個城池用 1 到 n 的整數表示。除 1 號城池外&#xff0c;城池 i 會受到另一座城池 fi 的管轄&#xff0c;其中 fi <i。也就是說&#xff0c;所有城池構成了一棵有根樹。這 m…

【原創】數據庫中為什么不推薦使用外鍵約束

引言 其實這個話題是老生常談&#xff0c;很多人在工作中確實也不會使用外鍵。包括在阿里的JAVA規范中也有下面這一條 【強制】不得使用外鍵與級聯&#xff0c;一切外鍵概念必須在應用層解決。 但是呢&#xff0c;詢問他們原因&#xff0c;大多是這么回答的 每次做DELETE 或者…

初識Activiti

http://wenku.baidu.com/view/bb7364ad4693daef5ff73d32.html 1. 初識Activiti 1.1. 工作流與工作流引擎 工作流&#xff08;workflow&#xff09;就是工作流程的計算模型&#xff0c;即將工作流程中的工作如何前后組織在一起的邏輯和規則在計算機中以恰當的模型進行表示并對其…

開源軟件 安全風險_3開源安全風險及其解決方法

開源軟件 安全風險Open source software is very popular and makes up a significant portion of business applications. According to Synopsys, 99% of commercial databases contain at least one open source component, and nearly 75% of these codebases contain open…

React-Router 源碼分析1

1、單頁面應用的路由基本原理 demo1 router1.html 復制代碼以 hash 形式為例。 1、init 監聽瀏覽器 url hash 更新事件。 2、route 存儲路由更新時的回調到回調數組routes中&#xff0c;回調函數將負責對頁面的更新。 3、refresh 執行當前url對應的回調函數&#xff0c;更新頁面…

linux安裝日志切割程序

linux安裝日志切割程序 安裝 gcc&#xff08;1&#xff09; yum insatll gcc &#xff08;2&#xff09;# cd cronolog-1.6.2 4、運行安裝 # ./configure# make# make install 5、查看cronolog安裝后所在目錄&#xff08;驗證安裝是否成功&#xff09; # which cronolog 一般情…

自助分析_為什么自助服務分析真的不是一回事

自助分析That title probably got your attention and now you think I have some explaining to do! The key word in the title is the word “A”. Self-service analytics isn’t a thing if “a thing” means a single, distinct corporate initiative or set of require…

BPMN2.0-概要

BPMN2.0-概要 作者&#xff1a;AliKevin2011&#xff0c;發布于2012-6-27 一、BPMN簡介 BPMN&#xff08;Business Process Model And Notation&#xff09;- 業務流程模型和符號 是有BPMI&#xff08;Business Process Management Initiative&#xff09;開發的一套變準的業務…

如何用Phaser實現一個全家福拼圖H5

一、Phaser介紹 二、整體框架搭建 三、資源加載 四、游戲邏輯五、完成六、總結參考文檔 最近用Phaser做了一個全家福拼圖h5的項目&#xff0c;這篇文章將會從零開始講解如何用Phaser實現&#xff0c;最終效果如下&#xff1a; 源碼&#xff1a;https://github.com/ZENGzoe/phas…

angularjs 默認跳轉

angularjs 的 $state.go() 跳轉頁面 &#xff0c;目標頁面的js函數 的執行 先于 $locationChangeStart 的監聽函數。 故意 添加 timeout 可以使 controller 在locationchangestart 之后觸發。轉載于:https://www.cnblogs.com/RoadAspenBK/p/9923332.html

錯誤錄入 算法_如何使用驗證錯誤率確定算法輸出之間的關系

錯誤錄入 算法Monument (www.monument.ai) enables you to quickly apply algorithms to data in a no-code interface. But, after you drag the algorithms onto data to generate predictions, you need to decide which algorithm or combination of algorithms is most re…