Django(1)

2022-12-27 18:00:11

1.前言

該專欄學習筆記環境引數如下:

  • Windows 10
  • Xampp/Navicat for MySQL
  • Python 3.8+
  • Django 3.0.*
  • Vue 2.6+

 

開發工具:

  • PyCharm 專業版
  • VS Code

 

補充說明:

本人電腦存在多個版本的python,那麼當你電腦存在多個版本python,如何使用?如何指定pip安裝到指定版本?通過py 選擇版本,然後進行相關命令操作。詳見:https://blog.csdn.net/stone_tigerLI/article/details/121496828,自行百度不贅訴

2.初識Django框架

2.1.Django介紹

Django分層設計也是通過MTV,區別於Flask,這些相關內容Django都有,不需要依賴擴充套件。安裝Django時,自己要在網上查詢一下你安裝的Django版本和你的Python版本相容不相容!

2.2.開發基礎知識

2.2.1.Django的安裝

  • 方式一:pip安裝【推薦】 pip install django 

  •  方式二:前往官網pypi.org下載原始碼安裝,cd到setup.py目錄下,執行 python setup.py install 

  •  檢測是否安裝成功
    import django
    django.__version__
    View Code

2.2.2.Django專案的建立

  • 方式一:使用命令列生成模板 django-admin[.py] startproject my_project ,這個命令的django-admin是什麼?在我們pip安裝好django後,在圖示目錄生成exe。命令引數含義:【.py】是可選的;startproject建立;my_project建立的專案名稱。

2.2.3.Django專案的檔案目錄結構

templates:模板目錄

test_django:專案目錄

  • __init__.py:包的入口檔案
  • asgi.py:部署設定
  • settings.py:專案組態檔
  • urls.py:url存取地址組態檔
  • wsgi.py:部署設定

manage.py:命令列管理工具

2.2.4.Django專案開發伺服器的啟動

啟動伺服器方式一: python manage.py runserver 

 啟動伺服器方式二:

思考:我想指定啟動的埠怎麼辦? 

 

2.3.開發流程講解

2.3.1.開發伺服器的啟動設定

知識點1:選擇專案直譯器,通過cmd執行django-admin建立的專案需要進行選擇。pycharm方式建立的專案不需要選擇,因為在建立專案的時候已經選擇過了直譯器

知識點2:啟動開發伺服器 python manage.py runserver ,runserver常用引數

  • 指定埠:
    • 命令列啟動 python manage.py runserver 9527 
    • pycharm啟動

  • 指定IP及埠:
    • 命令列啟動python manage.py runserver 0.0.0.0:9527
    • pycharm啟動

指定IP啟動後,根據頁面提示資訊,我們需要在setting.py設定ALLOWED_HOSTS,由於安全的需要,需要指定哪些主機是可以存取的;新增好之後,再次存取就OK了

2.3.2.專案模組的建立

建立範例hello模組: python manage.py startapp hello ,模組的含義以及生成的內容會在後面筆記中寫,該篇隨筆只是認識Django框架

2.3.3.完成第一個頁面

第一步:在views.py檔案中寫個函數

第二步:在urls.py設定規則

3.從請求到響應

3.1.從請求到響應

知識點:

  • 瞭解URL的設計及設定
  • 掌握檢視的定義及作用
  • 掌握URL和檢視的關係
  • 瞭解檢視響應的內容

 

什麼是檢視?

一個檢視函數,簡稱為檢視,是一個簡單的Python函數。函數定義的位置是在模組的views.py檔案中,傳入request引數,request這個引數是固定的必須得有,當然你也可以叫其他名字。

檢視函數的作用:就是接受一個請求,返回一個響應;

 

URL的設計:設計簡單優雅的URL:使用正規表示式、指定引數型別

URL的常用設定:函數 path(route,view,name,**kwargs) \函數 include(urls,namespace) ;path函數就是之前上述例子urls.py檔案中使用的,include函數就是我們在使用模組化開發的時候進行使用,希望把某一個模組下的url單獨進行管理,然後再把所有模組的url整合到一起,這個時候就需要用到include函數。

通過django專案的組態檔settings.py我們看到,根url是圖示的urls檔案

include範例:按模組管理url,首先在hello模組下新建一個urls檔案

URL與檢視的關係:

  • URL的正向解析
  • URL的逆向解析,防止我們硬編嗎,類似flask中的url_for

 

 

檢視響應的內容:

  • 可以是文字
  • HTML內容
  • 影象
  • 甚至是404、重定向等

 

小結:檢視是一個Python函數,用來處理http請求。通過path和include函數設定url,將url和檢視函數關係建立起來。

 

3.2.在檢視中處理業務邏輯

3.2.1.響應HTML內容

3.2.2.獲取URL引數

  • 獲取URL中指定型別的引數
  • 獲取URL中正則匹配的引數

3.2.3.獲取GET引數

3.3.從檔案響應HTML內容

知識點:

  • 回顧 響應HTML內容的原理
  • 瞭解 render_to_string()函數
  • 掌握 render()函數

3.3.1.響應HTML內容的原理

其實和FLASK差不多

  • 第一步,從磁碟讀取HTML檔案
  • 第二步,替換HTML中的特殊字元
  • 第三步,傳送給瀏覽器

 

3.3.2.render_to_string()函數

 render_to_string(template_name,context=None,request=None,using=None) 

  • template_name:模板名稱,必傳
  • request:請求物件
  • context:模板上下文物件(dict)
  • using:模板引擎名稱(如:Jinja2)

 

補充說明:組態檔settings.py檔案的TEMPLATES屬性說明

  • BACKEND:模板引擎,現在預設是使用django自帶的模板引擎
  • DIRS:模板目錄,去哪裡找html檔案
  • APP_DIRS:為True時,代表可以在模組下面去找html檔案
  • OPTIONS:設定選項

補充說明:Django框架尋找模板的順序,程式會先去根目錄的templates下尋找對應的html檔案,若根目錄下的templates下沒有對應的html檔案,程式會去模組下的templates尋找對應的html。若根目錄和模組目錄的templates都有這個html檔案,會執行根目錄下的html檔案。這個執行順序是無法修改的!

想讓程式去模組目錄裡面找html檔案怎麼設定呢?

3.3.3.render()函數

 render(request,template_name,context=None,content_type=None,status=None,using=None) ,實際工作當中render()的使用頻率要高於render_to_string(),因為它使用起來更簡單。

  • request:請求物件,必傳
  • template_name:模板名稱,必傳
  • context:模板上下文物件(dict)
  • context_type:MIME型別,預設為text/html
  • status:HTTP狀態碼
  • using:模板引擎名稱(如:Jinja2)

3.4.請求響應物件

知識點:

  • 掌握 請求到響應的流程
  • 理解 請求物件
  • 理解 響應物件

3.4.1.請求與響應

3.4.2.請求物件HttpRequest

請求物件HttpRequest其實是Django框架中寫好的一個類,它把我們每一次發過來的請求封裝成一個物件。檢視中使用的使用,方法傳遞進去的request,就是HttpRequest的範例。它裡面有一些常用的屬性和方法可以提供給我們使用:

  • 請求方式method(POST/GET/.....)
  • 請求頭資訊META/headers,META返回的更詳細,header返回的請求頭資訊常用的基本都在。反回的請求頭資訊都是JSON格式,常用的key資訊