Django 基礎二 View和urls

2022-07-08 06:48:13 字數 4000 閱讀 3174

的web開發了.首先進入專案的主目錄:

`cd ./djangolearn/hollow_world`

新建完成之後,可以看到當前目錄多了乙個叫myblog的檔案目錄.

.

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

進入myblog目錄會發現裡面有兩個檔案目錄和一些'.py'結尾的python檔案.

我們首先編輯一下'views.py'寫乙個方法,來實現讓瀏覽器輸出'hollow world!':

from django.shortcuts import render

from django.http import httpresponse#匯入httpresponse物件

上面的**實際上是定義了乙個方法(function),功能是:當接收到乙個http請求時,先判斷一下請求的方式是不是'get',如果是,就返回乙個用'hollow world!'這個字元進行初始化的httpresponse物件(在這裡hollow world會在瀏覽器訪問時顯示在頁面上).django官方把這種直接用def關鍵字定義方法來處理http請求的方式稱為function view。

編輯'hollow_world'檔案目錄下的urls.py檔案:

from django.contrib import admin

from django.urls import path

from myblog.views import hollow_world#引入上面編寫的hollow_world()方法

urlpatterns = [

path('admin/', admin.site.urls),

path('',hollow_world),#將路由對映到hollow_world()這個function上

]

到這裡可以說是萬事具備,只欠東風了.在我們的專案檔案目錄下啟動服務:

python manage.py runserver 8080

服務正常啟動如下圖:

.在瀏覽器中輸入:127.0.0.1:8080進行訪問,就能看到'hollow world! '了!

到這裡可以算是完成了一次:

使用者訪問瀏覽器-->瀏覽器收到使用者請求並且響應-->瀏覽器渲染伺服器的響應

的乙個完整過程.

現在概括一下django web的 一般步驟:

第一步:用`django-admin startproject`命令建立專案。

第五步:修改專案檔案的`urls.py`檔案,進行路由對映,然後就可以啟動服務訪問了!

上文中編寫views.py裡的檢視函式用的是function view的方式先判斷http請求的方式然後再做對應的處理,在業務邏輯較複雜時**可讀性不是很好。在實際開發中,為了避免頻繁的判斷http請求方式,和提高**的可讀性,一般採用class-based view 的方式來處理http請求。關於class-based view的介紹請看django官方文件.

用class-based view 的方式來實現讓瀏覽器輸出'hollow world!',views.py的**如下:

from django.shortcuts import render

from django.views import view #匯入view這個基礎類

要使用class-based view 必須要:

from django.views import view #匯入view這個基礎類
所有自定義的檢視類(在這個例子中是hollowview)必須是view的子類。也就是說,我們在定義自己的檢視類的時候,必須繼承view這個類。

上面我們修改了views.py,接下來是修改專案檔案目錄下的urls.py:

from django.contrib import admin

from django.urls import path

from myblog.views import hollowview#匯入hollowview

urlpatterns = [

path('admin/', admin.site.urls),

path('',hollowview.as_view()),

]

在使用hollowview這個檢視類之前必須先導入:

from myblog.views import hollowview#匯入hollowview
這裡的hollowview.as_view()呼叫了hollowview的as_view()方法是因為django的路由是把http請求對映到乙個可呼叫的方法上,而hollowview是乙個檢視類,不是可呼叫的方法。as_view()是檢視類的乙個class function,作用是建立乙個檢視類的例項,並且呼叫該例項的dispatch()方法,dispatch()方法會根據傳入的http的請求方式去匹配對應的方法進行請求的處理(在hollowview中我們只定義了用於處理http請求方式為get的處理方法)。

from django.contrib import admin

from django.urls import path,include

# from myblog.views import hollowview

urlpatterns = [

path('admin/', admin.site.urls),

]

myblog 檔案目錄下的的urls.py內容為:

from django.contrib import admin

from django.urls import path

from myblog.views import hollowview

urlpatterns=[

path('',hollowview.as_view()),

]

執行python manage.py runserver服務啟動後,我們訪問127.0.0.1:8000/blog就可以看到頁面上輸出了『hollow world!』

最後我們來概括一下django 的web開發的一般步驟:

第一步:用`django-admin startproject`命令建立專案。

django基礎之urls及view

環境為 python 3.x django 1.11,若安裝的 django 版本不一致,可先解除安裝然後指定版本安裝。解除安裝 pip uninstall django 指定版本安裝 pip install django 1.11 django 使用 mvc mtv 模式,其本質是為了保持各元件之...

Django中URL和View的關係

每次使用者發來乙個httprequest請求,django會用url pattern與請求進行匹配,匹配到第乙個url pattern就會把請求轉向對應的view view用來響應request,並返回response,response裡可以包含網頁檔案呀,等等。所以專案中絕大部分 均在此編寫。vi...

Django 拆分model和view的實現方法

在標準的dgango專案中,自動生成的目錄結構會包括models.py和views.py兩個檔案www.cppcns.com,www.cppcns.com分別在裡面寫model的 和controller的 但是所有的 都www.cppcns.com寫在乙個檔案裡面在大專案中不好維護,因此需要拆分開來...