創建專案app
-
Django 中的一個專案包含多個app,一個app就是一個相對獨立的模塊 ,實作相對獨立的功能,可以看作一個應用,本質上是一個Python 包,里面包含了一些應用相關的代碼檔案,
-
比如,我們可以把系統的管理員管理的功能做在一個名字為mgr的app里面,把銷售人員的操作實作在另外一個名字為sales的app里面,
-
一個專案分成多少個app完全取決開發者的設計,
-
Django 中創建app可以通過執行命令,創建一個app目錄,并在里面自動創建app常用的檔案,
比如,現在我們需要一個app專門處理白月醫藥系統中銷售員的添加、修改、查詢、洗掉請求,
我們就進入專案根目錄,執行下面的命令,
python manage.py startapp sales
這樣就會創建一個目錄名為sales,對應一個名為sales的app,里面包含了如下自動生成的檔案,這就是一個python package,

回傳頁面內容給瀏覽器
-
當我們輸入網址訪問百度后, 瀏覽器會發出http請求給百度的服務器,百度服務器回傳 HTML 檔案內容給瀏覽器, 瀏覽器決議后,呈現出我們最終看到的網頁內容,服務器回傳的 HTML 檔案內容其實就是符合HTML 語法的一段字串而已,
-
剛才的 sales 應用里面有個 views.py檔案,這個檔案里面通常是寫處理http請求的代碼的,我們假設凡是瀏覽器訪問的http請求的 url 地址是
/sales/orders/, 就由 views.py 里面的函式listorders來處理, 回傳一段字串給瀏覽器,
打開 views.py , 在里面加入如下內容
from django.http import HttpResponse
def listorders(request):
return HttpResponse("下面是系統中所有的訂單資訊,,,")
最終的回傳結果是 HttpResponse 物件的引數字串,
listorders的引數request是Django中的 HttpQuest物件,包含了請求中的資訊,
我們需要設定Django的url路由來告訴 Django :當前端發送過來的HTTP請求 url地址 是 /sales/orders/ , 就由 views.py 里面的函式 listorders 來處理,
url路由
添加路由記錄
這是url路由設定的入口檔案, 與專案同名的組態檔夾下,

打開該檔案,在urlpatterns串列變數中添加一條路由資訊,結果如下
from django.contrib import admin
from django.urls import path
# 別忘了匯入 listorders 函式
from sales.views import listorders
urlpatterns = [
path('admin/', admin.site.urls),
# 訪問‘admin/’這個網址的時候,由admin.site.urls處理
# 添加如下的路由記錄
path('sales/orders/', listorders),
]
urlpatterns串列 就是 Django 的 url 路由的入口,里面是一條條的路由記錄,我們添加的path('sales/orders/', listorders)就是告訴 django 當前端過來的請求url地址是 /sales/orders/ , 就由 views.py 里面的函式 listorders 來處理,
通常我們專案代碼的修改, Django的測驗服務可以自動檢測到,并且重新加載,不需要我們重啟 Django Web 服務,如果大家想重新啟動 Django web 服務, 大家可以在啟動web服務的命令列視窗,按ctrl + break(也就是Pause按鈕)先停止服務, 然后再次運行啟動命令,
重繪后

這就是瀏覽器的請求經過 Django路由后, 選擇執行我們定義的函式 listorders,該函式 回傳的字串, 被作為http回應的訊息體中的內容回傳給瀏覽器了,
所以瀏覽器最終顯示的就是我們 listorders 函式回傳的字串,
路由子表
url 路由表就是一個請求對應一個處理函式,
我們通常可以將不同的路由記錄按照功能分拆到不同的url路由子表檔案中,
比如,這里我們可以把訪問的 url 凡是以 sales 開頭的全部都由 sales app 目錄下面的子路由檔案 urls.py 處理,
首先我們需要在 sales 目錄下面創建一個新的檔案 sales\urls.py ,然后在這個 sales\urls.py 檔案中輸入如下內容
from django.urls import path
from . import views
urlpatterns = [
path('orders/', views.listorders),
]
然后,我們再修改主url路由檔案 bysms/urls.py , 如下
from django.contrib import admin
# 匯入一個include函式
from django.urls import path, include
from sales.views import listorders
urlpatterns = [
path('admin/', admin.site.urls),
# 凡是 url 以 sales/ 開頭的,
# 都根據 sales.urls 里面的 子路由表進行路由
path('sales/', include('sales.urls')),
]
include是Django里一個專門處理路由的函式,
當一個http請求過來時, Django檢查 url,比如這里是sales/orders/,先到主url路由檔案 bysms/urls.py中查看是否有匹配的路由項,如果有匹配 ( 這里匹配了 sales/), 并且匹配的物件是一個子路由設定 , 比如這里是include('sales.urls') 就會去子路由檔案中(sales\urls.py)中查看 ,
注意這時,會從請求url中去掉前面主路由檔案 已經匹配上的部分(這里是 sales/), 將剩余的部分(這里是 orders/ )去子路由檔案中查看是否有匹配的路由項,
匹配到 orders/ ,匹配的物件,這里是 views.listorders ,它是一個處理函式,就呼叫該函式處理這個http請求,將該函式的回傳物件構建 HTTP回應訊息,回傳給客戶端,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/157793.html
標籤:其他
上一篇:tsn
下一篇:Python基礎函式使用知識
