《玩轉Django2.0》讀書筆記-Django建站基礎html
做者:尹正傑 前端
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。python
一.網站的定義及組成mysql
網站(Website)是指在因特網上根據必定規則,使用HTML(標準通用標記語言下的一個應用)等工具製做並用於展現特定內容相關網頁的集合。簡單地說,網站是一種溝通工具,人們能夠經過網站來發布本身想要公開的諮詢,或者利用網站來提供相應的網絡服務,也能夠經過網頁瀏覽器來訪問網站,獲取本身須要的諮詢或者享受網絡服務。git
在早期,域名,空間服務器與程序是網站的基本組成部分,隨着科技的不斷進步,網站的組成也日趨複雜,目前多數網站由域名,空間服務器,DNS域名解析,網站程序和數據庫等組成。github
域名(Domain Name)由一串用點分割的字母組成(例如:www.yinzhengjie.org.cn),表明互聯網上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位,已經成爲互聯網的品牌和網上商標保護必備的產品之一。通俗的說,域名就至關於一個家庭的門牌號碼,別人經過這個號碼能夠很容易地找到你所在的位置。以百度的域名(www.baidu.com)爲例,百度的網址是由最後兩部分組成的,標號「baidu」是這個域名的主域名體;前面的「www.」是網絡名;最後的標號「com」則是該域名的後綴,表明的是一個國際域名,屬於頂級域名之一。常見的域名後綴有如下幾種:正則表達式
- 「.com」: 商業性的機構培訓或公司。
- 「.net」: 從事Internet相關的網絡服務的機構或公司。
- 「.org」: 非盈盈利的組織,團體。
- 「.gov」: 政府部門。
- 「.cn」: 中國國內域名。
- 「.com.cn」: 中國商業域名。
- 「.net.cn」: 中國從事Internet相關的網絡服務的機構或公司。
- 「.org.cn」: 中國非營利的組織,團體。
- 「.gov.cn」: 中國政府部門。
空間服務器主要有虛擬主機,獨立的服務器和VPS等。sql
虛擬主機是在網絡服務器上規劃出必定的磁盤空間供用戶放置點的應用組件等,提供必要的站點功能,數據存放和傳輸功能。所謂虛擬機主機,也叫「網站空間」,就是把一臺運行在互聯網的服務器規劃成多個「虛擬」的服務器。每一個虛擬主機都具備獨立的域名和完整的Internet服務器(支持www,ftp,e-mail等)功能。虛擬主機是網絡發展的福音,極大的促進來網絡技術的應用和普及。同時虛擬主機的租用服務也成了網絡時代新的經濟形式,虛擬主機的租用相似於房屋租用。數據庫
獨立服務器事是指性能更強大,總體硬件徹底獨立的服務器,其CPU都在8核心以上。編程
VPS即虛擬即專用服務器,是將一個服務器區分紅多個虛擬獨立專享服務器的技術。每一個使用VPS技術的虛擬獨立服務器擁有各自獨立的公司IP地址,操做系統,硬盤空間,內存空間和CPU資源等,還能夠進行安裝程序,重啓服務器等操做,與一臺獨立服務器徹底相同。
網站程序是建設與修改網站所使用的編程語言,源代碼是按照必定格式書寫的文字和符號編寫的,能夠是任何編程語言。常見的網站開發語言有Java,PHP,ASP.NET和Python等。而瀏覽器就如程序的編譯器,它會將源代碼翻譯成圖文內容程序在網頁上,這個過程我們開發人員喜歡叫它渲染。
二.網站的分類
諮訊門戶類網站是以提供信息諮訊爲主要目的,是目前廣泛的網站造成之一,例如新浪,搜狐和新華網。這類網站雖然覆蓋的信息類型多,信息量大和訪問羣體廣,但包含的功能卻比較簡單,網站基本功能包含檢索,論壇,留言和用戶中心等。這類網站開發的技術含量主要涉及4個因素:
- 承載的信息類型。例如是否承載多媒體信息,是否承載結構化信息等。
- 信息發佈的方式和流程。
- 信息量的數據量。
- 網站用戶管理。
企業品牌類網站用於展現企業綜合實力,體現企業文化和品牌理念。企業品牌網站很是強調創意,對於美工設計要求較高,精美的FLASH動畫是經常使用的表現形式。網站內容組織策劃和產品展現體驗方面也有較高的要求。網站利用多媒體交互和動態網頁技術,針對目標客戶進行內容建設,達到品牌營銷的傳播目的。企業品牌網站可細分爲如下三類:
- 企業形象網站:塑造企業形象,傳播企業文化,推薦企業業務,報道企業活動和展現企業實力。
- 品牌形象網站:當企業擁有衆多品牌且不一樣品牌之間市場定位和營銷策略各不相同是,企業可根據不一樣品牌創建其品牌網站,以針對不一樣的消費羣體。
- 產品形象網站:針對某一產品的網站,重點在於產品的體驗。
交易類網站以實現交易爲目的,以訂單爲中心。交易的對象能夠是企業的消費者。這類網站三項基本內容:商品如何展現,訂單如何生成和訂單如何執行。所以這類網站通常須要有產品管理,訂購管理,訂單管理,產品推薦,支付管理,收費管理,送法貨管理和會員管理等基本功能。功能複雜一點的可能還須要基本管理系統,VIP管理系統,CRM系統,MIS系統,ERP系統和商品銷售分析系統等。交易類網站成功是否的關鍵在於業務模型的優劣。交易類網站可細分爲如下三大類型:
- B2C(Business To Consumer)網站:商家-消費者,主要是購物網站,用於商家消費和消費者之間的買賣,如傳統的百貨商店和購物廣場等。
- B2B(Business To Business)網站:商家-商家,主要是商務網站,用於商家之間的買賣,如傳統的原材料市場和大型批發市場。
- C2C(Consumer To Consumer)網站:消費者-消費者,主要以拍賣網站爲主,用於我的物品的買賣,如傳統的舊貨市場,跳騷市場,廢品收購站等。
辦公及政府機構網站分爲企業辦公事物類網站和政府辦公類網站。企業辦公事物類網站主要包括辦公事物管理系統,人力資源管理系統和辦公成本管理系統。政府辦公類網站是利用政府專用網絡和內部辦公類網絡而創建的內部門戶信息網,是爲了方便辦公區域之外的相關部門互通訊息,統一數據和共享文件資料而創建的,基本功能有:
- 提供多數據源接口,實現業務系統的數據整合。
- 統一的用戶管理,提供方便有效的訪問權限和管理權限體系。
- 靈活設立子網站,實現複雜的信息發佈管理流程。
網站面向社會公衆,既能夠提供辦公指南,政策法規和動態信息等,也可提供網上行政業務申報,辦理和相關數據查詢等。
互動遊戲網站是近年來國內逐漸風靡起來的一種網站。這類網站的投入是根據所承載遊戲的複雜程度來定的,其發展趨勢是向超巨型方向發展,有的已經造成來獨立的網絡世界。
功能性網站是一種新型網站,其中Google和百度是典型表明。這類網站的主要特性是講一個具備普遍需求的功能擴展開來,開發一套強大的功能體系,將功能的實現推向極致。功能在網頁上看似簡單,但實際投入成本至關驚人,並且效益也很是巨大。
三.網站運行原理及開發流程
若是剛接觸網站開發,頗有必要了解網站的運行原理。在瞭解網站運行原理以前,首先須要理解網站中一些經常使用的術語。
- 客戶端:在計算機上運行並連接到互聯網的應用程序,簡稱瀏覽器,如Chrome,Firefox和IE。用戶經過操做客戶端實現網站和用戶之間的數據交互。
- 服務器:能連接到互聯網並且具備IP地址的計算機,服務器主要接受和處理用的請求信息。當用戶在客戶端操做網頁的時候,實質是向網站發送一個HTTP請求,網站的服務器接受到請求後會執行相應的處理,最後將處理結果返回到客戶端並生成相應的網頁信息。
- IP地址:互聯網的協議地址,TCP/IP網絡設備(計算機,服務器,打印機,路由器等)的數字標識符。互聯網上的每一臺計算機都有一個IP地址,用於識別和通訊。IP地址有4組數字,以小數點分割(例如:219.141.136.10)這個被成爲邏輯地址。爲了在網絡中定位設備,經過TCP/IP協議將邏輯IP地址轉換爲物理地址(物理地址即計算機李的MAC地址)。
- 域名:用於標識一個或者多個IP地址。
- DNS:域名系統,用於跟蹤計算機的域名及其所在的互聯網上相應的IP地址。
- ISP:互聯網服務提供商。主要工做是在DNS(域名系統)查找當前域名對應的IP地址。
- TCP/IP:傳輸控制協議/互聯網協議,是普遍使用的通訊協議。
- HTTP:超文本傳輸協議,是瀏覽器和服務器經過互聯網進行通訊的協議。
瞭解網站經常使用術語後,咱們經過一個簡單的例子來說解網站運行的原理。
- 在瀏覽器中輸入網站地址,如「www.github.com」。
- 瀏覽器解析網站地址中包含的信息,如HTTP協議和域名(github.com)。
- 瀏覽器與ISP通訊,在DNS查找www.github.com所對應的IP地址,而後將IP地址發送到瀏覽器的DNS服務,最後向「www.github.com」的IP地址放鬆請求。
- 瀏覽器從網站地址中獲取IP地址和端口(HTTP默認是80端口,HTTPS默認的端口是443),並打開TCP套接字連接,實現瀏覽器和Web服務器的連接。
- 瀏覽器根據用戶操做向服務器發送相應的HTTP請求,如打開「www.github.com」的主頁面。
- 當Web服務器接受請求後,根據請求信息查找該HTML頁面。若是頁面存在,則Web服務器將處理結果和頁面返回到瀏覽器。若是服務器找不到頁面,將發送一個404錯誤信息,表明找不到相關的頁面。
不少人認爲開發網站是一件很困難的事情,其實沒有想象中那麼困難。只要明白網站的開發流程,就會以爲網站開發是很是簡單的。若是沒有一個清晰的開發流程知道開發,那麼整個開發過程當中會以爲難以實行。完整的開發流程以下:
- 需求分析:當拿到一個項目時,必須進行需求分析,清楚知道網站的類型,具體功能,業務邏輯以及網站的風格,此外還要肯定域名,網站空間或者服務器以及網站備案等。
- 規劃靜態內容:從新肯定需求分析,並根據用戶需求規劃處網站的內容板塊草圖。
- 設計階段:根據網站草圖,由美工製做成效果圖。就比如建房子同樣,首先畫出效果圖,而後開始建房子,網站開發也如此。
- 程序開發階段:根據草圖劃分頁面結構和設計,前端和後臺能夠同時進行。前端根據美工效果負責製做靜態頁面;後臺根據頁面結構和設計,設計數據庫數據結構和開發網站後臺。
- 測試和上線:在本地搭建服務器,測試網站是否存在BUG。若無問題,則能夠將打包,使用FTP上傳至網站或者服務器。
- 維護推廣:在網站上線後,根據實際狀況完善網站的不足之處,按期修復和升級,保障網站運營順暢,而後對網站進行推廣宣傳等。
四.走進Django
Django是一個開放源代碼的Web應用框架,由python寫成,最初用於管理勞倫斯出版集團期待的一個以新聞內容爲主的網站,即CMS(內容管理系統)軟件,與2005年7月在BSD許可證下發布,這套框架是以比利時的吉卜賽爵士吉他手Django Reinhardt來命名的。Django採用了MTV的框架模式,即模型(Model),模版(Templete)和視圖(Views),三者之間各自負責不一樣的職責。
- 模型:數據存取層,處理與數據相關的全部事務,例如如何存取,如何驗證有效性,包含哪些行爲以及數據之間的關係等。
- 視圖:表現層,處理與表現相關的決定,例如如何在頁面或其餘類型文檔中進行顯示。
- 模版:業務邏輯層,存取模型及調取恰當模版的相關邏輯,模型與模版的橋樑。
Django的主要目的是簡便,快速地開發數據庫驅動的網站。它強調代碼複用,多個組件能夠很方便地開發出本身的工具包。這使得Django具備很強的可擴展性,還強調快速開發和DRY(Do Not Repeat Yourself)原則。Django基於MVC的設計十分優美:
- 對象關係映射(Object Relational Mapping,ORM):經過定義映射類來構建數據模型,將模型與關係數據連接起來,使用ORM框架內置的數據庫接口可實現複雜的數據操做。
- URL設計:開發者能夠設計任意的URL(網站地址),並且還支持使用正則表達式設計。
- 模版系統:提供可擴展的模板語言,模板之間具備可繼承性。
- 表單處理:能夠生成各類表單模型,並且表單具備有效性檢驗功能。
- Cache系統:完善的緩存系統,可支持多種緩存方式。
- 用戶管理系統:提供用戶認證,權限設置和用戶組功能,功能擴展性強。
- 國際化:內置國際化系統,方便開發出多種語言的網站。
- admin管理系統:內置admin管理系統,系統擴展性強。
五.Django 2.0的新特性
2017年12月2日,Django官方發佈2.0版本,成爲多年來第一次大版本提高。其中主要特定是Django2.0支持python3.4,3.5,3.6,不在支持python2,而Django1.11是支持python2.7的最後版本。此外,新版本還有如下的顯著特性:
- 簡化URL路由語法:使得「Django.urls.path()」方法的語法更簡單。功能倒入模塊由「Django.urls」實現,如「form Django.urls import include,path,re_path」。
- admin管理系統:支持主流的移動設備並新增屬性「ModelAdmin.autocomplete_fields」和方法「ModelAdmin.get_autocomplete_fields()」。
- 用戶認證:「PBKDF2」 密碼哈希默認的迭代次數從3600增長到100000.
- Cache(緩存):「cache.set_many」如今返回一個列表,包含了插入失敗的鍵值。
- 通用視圖:「ContextMixin.extra_context」屬性容許在「View.as_view()」中添加上下文。
- Pagination(分頁):增長「Paginator.get_page()」,能夠處理各類非法頁面參數,防止異常。
- Templates(模板):提升「Engine.get_default()」在第三方模塊的用途。
- Validators(驗證器):不容許「CharField」及其子類的表單輸入爲空。
- File Storage(文件存儲):「File.open()」能夠用於上線文管理器,例如「with file.open() as f」。
- 連接Mysql不在使用「mysqldb」模塊,改用爲「mysqlclient」,二者之間並無太大的使用差別。
- Management Commands(管理命令):「inspectdb」將mysql的無符號整數視做「PositiveSmallIntegerField」字段類型。
六.使用Pycharm搭建DJango開發環境
詳情請參考個人筆記:「Pycharm搭建Django開發環境」 。