django模板怎麼配置檢視和url

karspb發表於2021-09-11

django模板怎麼配置檢視和url

在建立專案時,Django會自動建立URL配置,在urls.py檔案中

檔案的預設內容如下所示:

"""mysite URL Configuration
    The urlpatterns list routes URLs to views. For more information please see:
        
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
    Including another URLconf
        1. Add an import:  from blog import urls as blog_urls
        2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))
    """
    from django.conf.urls import include, url
    from django.contrib import admin
    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
]

去掉註釋,剩下的都是精華,逐行分析:

第一行從 django.conf.urls 模組中匯入兩個函式:include,用於匯入另一個 URL 配置模組;url,使用正規表示式模式匹配瀏覽器中的 URL,把它對映到 Django 專案中的某個模組上。

第二行從 django.contrib 模組中匯入 admin 函式。這個函式傳給 include 函式,載入 Django 管理後臺的 URL。 

第三行是 urlpatterns,即 url() 例項列表。Django期待URL配置中有urlpatterns這個物件,它負責定義 URL 與處理URL 的程式碼之間的對映。在 URL 配置中新增 URL 和檢視的方式是,把 URL 模式對映到檢視函式上。

注意:

url函式的第一個引數是正規表示式,第二個是檢視函式

如果我們指定的URL模式要求末尾有/,預設情況下,如果請求的 URL 不匹配任何 URL 模式,而且末尾沒有斜線,那麼 Django 會把它重定向到末尾帶斜線的 URL

我們以物件的形式傳入檢視函式,而沒有呼叫函式

Django處理請求的過程

建立Django專案時,自動建立了setting.py檔案,儲存了當前專案的全部配置,各個配置的名稱都是大寫,例如TEMPLATE_DIRS,DATABASES等,其中ROOT_URLCONF,指向自動生成的urls.py,它告訴Django,網站的URL配置在哪個Python模組。收到針對某個 URL的請求時,Django 載入 ROOT_URLCONF 設定指定的 URL 配置;然後按順序檢查 URL 配置中的各個 URL 模式,依次與請求的 URL 比 較,直到找到匹配的模式為止。

找到匹配的模式後,呼叫對應的檢視函式,把一個HttpRequest物件作為第一個引數傳給檢視函式,檢視函式必須返回一個HttpResponse物件。

綜上,整個過程如下:

收到請求

Django檢視ROOT_URLCONF設定,找到根URL配置

Django比較URL配置中的各個URL模式,找到與請求匹配的那個

如果找到,呼叫對應的檢視函式

檢視函式返回一個HttpResponse物件

Django把HttpResponse物件轉換成正確的HTTP響應,得到網頁。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2836937/,如需轉載,請註明出處,否則將追究法律責任。

相關文章