Django框架(一)-- Django簡介

django(Python Web框架)
Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,視圖V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容爲主的網站的,便是CMS(內容管理系統)軟件。
 

框架介紹

Django 項目是一個Python定製框架,它源自一個在線新聞 Web 站點,於 2005 年以開源的形式被釋放出來。Django 框架的核心組件有:
  1. 用於建立模型的對象關係映射
  2. 爲最終用戶設計的完美管理界面
  3. 一流的 URL 設計
  4. 設計者友好的模板語言
  5. 緩存系統。

web框架: 別人已經設定好的一個web網站模板,你學習它的規則,而後「填空」或「修改」成你本身須要的樣子。css

  通常web框架的架構是這樣的:html

 

  其它基於python的web框架,如tornado、flask、webpy都是在這個範圍內進行增刪裁剪的。例如tornado用的是本身的異步非阻塞「wsgi」,flask則只提供了最精簡和基本的框架。Django則是直接使用了WSGI,並實現了大部分功能。前端

MVC與MTV模型python

MVC

Web服務器開發領域裏著名的MVC模式,所謂MVC就是把Web應用分爲模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、鬆耦合的方式鏈接在一塊兒,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求,其示意圖以下所示:linux

MTV

Django的MTV模式本質上和MVC是同樣的,也是爲了各組件間保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別是值:web

  • M 表明模型(Model): 負責業務對象和數據庫的關係映射(ORM)。
  • T 表明模板 (Template):負責如何把頁面展現給用戶(html)。
  • V 表明視圖(View):   負責業務邏輯,並在適當時候調用Model和Template。

除了以上三層以外,還須要一個URL分發器,它的做用是將一個個URL的頁面請求分發給不一樣的View處理,View再調用相應的Model和Template,MTV的響應模式以下所示:sql

通常是用戶經過瀏覽器向咱們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(若是不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,而後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。數據庫

Django的下載與基本命令

1.下載Django

  方式一:在命令行輸入:pip3 install  django
django

    pip install django==1.11.9 -i http://pypi.hustunique.org/simple   指定版本號,指定國內鏡像flask

  方式二:用pycharm安裝

  方式三:用pycharm的Terminal的命令行安裝

2.建立django

 在linux等命令行界面下,使用django提供的命令和vim也能進行項目開發。可是,這裏推薦使用pycharm這個目前最好的python開發IDE

,它功能強大,界面友好。(下面全部的操做都在pycharm中進行。)

  點擊:file-->new project,出現下面的對話框。

選擇Django欄目,輸入項目名稱,這裏採用國際慣例的mysite。選擇python解釋器版本,點擊create建立。

Django將自動生成下面的目錄結構:

與項目同名的目錄中是配置文件,templates目錄是html文件存放也就是MTV中的T。manage.py是django項目管理文件。

3. 建立APP

  在每一個django項目中能夠包含多個APP,至關於一個大型項目中的分系統、子模塊、功能部件等等,相互之間比較獨立,但也有聯繫。

全部的APP共享項目資源。

  在pycharm下方的terminal終端中輸入命令:

  python manage.py startapp cmdb

  這樣就建立了一個叫作cmdb的APP,django自動生成「cmdb」文件夾。

 

4. 編寫路由

  路由都在urls文件裏,它將瀏覽器輸入的url映射到相應的業務處理邏輯。

  簡單的urls編寫方法以下圖:

5. 編寫業務處理邏輯

  業務處理邏輯都在views.py文件裏。

  經過上面兩個步驟,咱們將index這個url指向了views裏的index()函數,它接收用戶請求,並返回一個「hello world」字符串。

6. 運行web服務

  如今咱們已經能夠將web服務運行起來了。

  命令行的方式是:python manage.py runserver 127.0.0.1:8000

  但在pycharm中,你能夠這麼幹:

  在上部工具欄中找到下面圖示的圖標。

點擊下拉箭頭

點擊edit configurations

在host中填入:127.0.0.1   port中填入:8000

OK肯定以後,點擊綠色的三角,web服務就運行起來了。

圖所示,自動跳轉到瀏覽器程序界面。顯示的倒是下圖的404頁面:

修改一下url,添加「/index」,就一切ok了!

7.  返回HTML文件

  上面咱們返回給用戶瀏覽器的是什麼?一個字符串!實際上這確定不行,一般咱們都是將html文件返回給用戶。

  下面,咱們寫這麼一個index.html文件:

  再修改一下views文件:

爲了讓django知道咱們的html文件在哪裏,須要修改settings文件的相應內容。但默認狀況下,它正好適用,你無需修改。

接下來,咱們能夠從新啓動web服務。在瀏覽器刷新一下,你會看到帶有樣式的「hello world」。

注:這裏有個小技巧,在屢次頻繁重啓服務時,因爲端口未釋放的緣由,容易啓動不了服務,修改一下端口就OK了。

8. 使用靜態文件

  咱們已經能夠將html文件返還給用戶了,可是還不夠,前端三大塊,html、css、js還有各類插件,它們齊全才是一個完整

的頁面。在django中,通常將靜態文件放在static目錄中。接下來,在mysite中新建個static目錄。

你的CSS,JS和各類插件均可以放置在這個目錄裏。

爲了讓django找到這個目錄,依然須要對settings進行配置:

一樣,在index.html文件中,能夠引入js文件了:

從新啓動web服務,刷新瀏覽器,查看結果。

9. 接收用戶發送的數據

  上面,咱們將一個要素齊全的html文件返還給了用戶瀏覽器。但這還不夠,由於web服務器和用戶之間沒有動態交互。

下面咱們設計一個表單,讓用戶輸入用戶名和密碼,提交給index這個url,服務器將接收到這些數據。

  先修改index.html文件

而後修改views.py文件

此時 ,重啓web服務時,會出錯,由於django有一個csrf跨站請求保護機制,咱們暫時在settings文件中將它關閉,或者在form表單裏添加一個`{% csrf_token %}`標籤。這裏爲了演示方便,咱們採用臨時關閉的方式。

再次進入瀏覽器,刷新頁面:

輸入點東西,而後咱們在pycharm中能夠看到相應的數據。

10. 返回動態頁面

  咱們收到了用戶的數據,但返回給用戶的依然是個靜態頁面,一般咱們會根據用戶的數據,進行處理後在返回給用戶。

這時候,django採用本身的模板語言,相似jinja2,根據提供的數據,替換掉html中的相應部分,詳細語法入門後再深刻學習。

先改造views.py文件:

再改造index.html文件:

重啓服務,刷新瀏覽器:

能夠看到,咱們得到了用戶實時輸入的數據,並將它實時展現在了用戶頁面上,這是個不錯的交互過程。

11. 使用數據庫

  流程走到這裏,django的MTV框架基本已經浮出水面了,只剩下最後的數據庫部分了。

  上面咱們雖然和用戶交互得很好,但並無保存任何數據,頁面一旦關閉,或服務器重啓,一切都將回到原始狀態。

  使用數據庫是毫無疑問的,django經過自帶的ORM框架操做數據庫,而且自帶輕量級的sqlite3數據庫。下面咱們來看一看:

  首先是註冊app:

不註冊它,你的數據庫就不知道該給哪一個app建立表。

而後咱們在settings中,配置數據庫相關的參數,若是使用自帶的sqlite,不須要修改。

 

 

 再編輯models.py文件,也就是MTV中的M。

這裏咱們建立了2個字段,分別保存用戶的名字和密碼。

接下來要在pycharm的teminal中經過命令建立數據庫的表了。有2條命令,分別是:

python manage.py makemigrations

再輸入命令:python manage.py migrate

修改views.py中的業務邏輯

 

重啓web服務後,刷新瀏覽器頁面,以後和用戶交互的數據都能保存到數據庫中。任什麼時候候均可以從數據庫中讀取數據,展現到頁面上。

至此,一個要素齊全,主體框架展現清晰的django項目完成了

相關文章
相關標籤/搜索