1. 程式人生 > >python學習筆記 Day 19 Web應用程式 - Django入門

python學習筆記 Day 19 Web應用程式 - Django入門

Day 19 Django入門

  • 前言


    在這裡插入圖片描述


    • 要理解Django,首先要理解MVC模式:
      • M,Model,模型,用於與資料庫互動的業務規則並相應View的請求而返回指定資料,通俗的說,Model以程式碼的形式實現了桌面資料庫(如SQL Server Enterprise或Access或Oracle)中定義資料庫表、根據SQL語句查詢資料等功能;
      • V,View,檢視響應使用者(網頁)的請求,從Model提取的資料,將資料填入模版並將此網頁反饋給使用者。
      • C,Control,控制檯,接受外部使用者的操作,根據操作訪問模型獲取資料,並呼叫“檢視”顯示這些資料。
    • Django也是一個MVC框架。但是在Django中,控制器接受使用者輸入的部分由框架自行處理,所以 Django 裡更關注的是模型(Model)、模板(Template)和檢視(Views),稱為 MTV模式:
      • M 代表模型(Model),即資料存取層。 該層處理與資料相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及資料之間的關係等。(參考上面對Model的定義)
      • T 代表模板(Template),即表現層。 該層處理與表現相關的決定: 如何在頁面或其他型別文件中進行顯示。(白話文:模版其實就是網頁框架,只不過沒有資料)
      • V 代表檢視(View),即以程式碼形式存在的業務邏輯層。 該層包含存取模型及調取恰當模板的相關邏輯。 你可以把它看作模型與模板之間的橋樑。(白話文:View響應使用者的請求,呼叫Model的函式獲取資料,然後再呼叫相應的模版(由URL)指定,填寫資料,形成最終的HTML檔案,再返回使用者顯示)

  • 正式進入DJango學習

    • Django 路由系統:
      • URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL模式以及要為該URL模式呼叫的檢視函式之間的對映表;你就是以這種方式告訴Django,對於這個URL呼叫這段程式碼,對於那個URL呼叫那段程式碼。URL的載入是從配置檔案中開始。
      	urlpatterns = [
      		url(正則表示式, view函式, 引數, 別名)
      	]
      	```
      

    引數說明:

        # 一個正則表示式字串
    	# 一個可呼叫物件,通常為一個檢視函式或一個指定檢視函式路徑的字串
    	#  可選的要傳遞給檢視函式的預設引數(字典形式)
    	#  一個可選的name引數
    
    • 建立虛擬環境
      • 新建立一個目錄用於構建Django應用:
      $ mkdir learning_log
      
      • 測試是否安裝了虛擬環境
      learning_log$ python -m vent ll_env
      

    如果沒有任何錯誤提示,直接返回命令提示狀態,說明已安裝,否則,需要安裝虛擬環境。

    • 安裝虛擬環境
    $ pip install --user virtualenv
    Collecting virtualenv
    Downloading https://files.pythonhosted.org/packages/7c/17/9b7b6cddfd255388b58c61e25b091047f6814183e1d63741c8df8dcd65a2/virtualenv-16.1.0-py2.py3-none-any.whl (1.9MB)
        100% |████████████████████████████████| 1.9MB 5.9MB/s 
    Installing collected packages: virtualenv
    The script virtualenv is installed in '/Users/******/Library/Python/3.7/bin' which is not on PATH.
    Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
    

    在windows環境下,執行:

    python -m pip install --user virtualenv
    

    提示需要將virtualenv路徑新增到系統路徑:

    $ sudo vim /etc/paths
    
    • 建立虛擬環境
    $ virtualenv ll_env
    
    • 啟用虛擬環境
    $ source ll_env/bin/activate
    

    Windows環境下執行下面的命令啟用虛擬環境:

    ll_env\Scripts\activate
    
    • 安裝Django:建立並激活虛擬環境後就可以安裝Django了
    $ pip install Django
    
    • 1 、建立專案,千萬別忘了命令列後面的那個點“.”
      這裡,“專案“的概念,就是建立一個WEB伺服器。
    $ django-admin.py startproject learning_log .
    
    
    • 2、建立資料庫
      這裡所建立的資料庫,是整個WEB伺服器的資料庫框架(類似於在Windows環境下,安裝好IIS後(建立‘專案‘),再安裝SQL Server),下文提到的“應用”所建立的資料庫,就是在這個WEB伺服器資料庫框架中建立資料庫。
    python manage.py migrate
    
    • 檢視專案(啟動伺服器)
    python manage.py runserver
    

    開啟瀏覽器,輸入127.0.0.1/8000
    在這裡插入圖片描述

    • 小結:1和2兩個步驟,分別建立了WEB伺服器(專案)並安裝好了資料庫框架,現在看一下learning_log目錄下的檔案:
    	__init__py, settings.py, urls.py, manage.py wsgi.py
    

    其中,settings.py指定Django如何與剛剛建立好的WEB伺服器互動並管理該伺服器。URLS.py應該建立哪些網頁響應瀏覽器請求(該WEB伺服器下每個應用們都應該有不同的url入口)。manage.py用於專案管理,例如。新建應用程式,應用程式建立資料庫等。

    • 建立應用程式
    	(ll_env)learning_log$ python manage.py startapp learning_logs
    

    建立好一個名為“learning_logs“的應用程式,這時,在learning_log目錄下,多了一個資料夾learning_logs,該資料夾儲存應用learning_logs的所有內容。

    • 3、定義模型
      定義模型的過程,就是建立應用程式資料庫的過程。
      編輯models.py檔案
    • 4、啟用模型
      修改learning_logs目錄中的settings.py檔案,然後在終端中執行:
    (ll_env)learninglog$ python manage.py makemigrations learning_logs
    
    • 5、遷移資料庫
    $ python manage.py migrate
    
    • 6、建立超級使用者
    $ python manage.py createsuperuser
    
    • 7、註冊模型
      修改admin.py

    • 小結:步驟3、4、5完成了應用程式建立資料庫表的過程。步驟7完成了應用程式資料庫模型向專案的註冊過程。

    • 8、定義模型Entry,並重復遷移和註冊(5、7)過程
      修改model.py,定義Entry類。
      定義Entry模型,相當於新建了一個數據庫表Entry,此表與Topic表是多對一的關係,即一個topic 的ID下可以關聯多個Entry。
      此時,再訪問127.0.0.1:8000/admin,網站如下圖,可以看到裡面有兩個資料庫表;Entry和Topic。
      127.0.0.1:8000/admin

    • 建立網頁
      建立網頁分三個階段:定義URL,編寫檢視(View)和編寫模版(Template)。
      首先,必須定義URL模式,URL模式描述了URL是如何設計的,讓Django知道如何將瀏覽器請求與網站URL匹配。
      每個URL請求都被對映到特定的檢視,檢視函式獲取並處理網頁所需資料。
      每個檢視函式通常呼叫一個模版,模版函式生成瀏覽器能理解的網頁。

    注意,解決’Specifying a namespace in include()withou providing an app_name)'錯誤:

    	python3 Django 環境下,如果你遇到在根目錄下urls.py中的include方法的第二個引數namespace新增之後就出錯的問題。請在[app_name]目錄下的urls.py中的urlpatterns前面加上app_name='[app_name]', [app_name]代表你的應用的名稱。
    	例如:app_name ='[blog]' 
    	--------------------- 
    	作者:他說少年如歌 
    	來源:CSDN 
    	原文:https://blog.csdn.net/qq_27437781/article/details/80436799 
    	版權宣告:本文為博主原創文章,轉載請附上博文連結!
    	```
    	![Topics](https://img-blog.csdnimg.cn/20181222155131216.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0ZXZlbnRpYW43Mg==,size_16,color_FFFFFF,t_70)
    	
    

Django建立WEB應用程式簡要流程