Django基礎1 請求和響應

2021-08-28 17:22:23 字數 4152 閱讀 2546

四、建立投票應用程式

安裝命令:

pip3 install django
檢視版本:

python3 -m django --version

2.1.2

版本的選擇:

作為學習當然選擇最新版本了, 預設安裝的也是最新版本。

django2.0	 python3.4, python3.5, python3.6

django2.1 python3.5, python3.6, python3.7

更多版本對應資訊請檢視:

在命令列(終端)中,cd到你想要用來儲存**的目錄,然後執行如下命令:

$ django-admin startproject mysite
建立的專案目錄結構如下:

mysite/

manage.py

mysite/

__init__.py

settings.py

urls.py

wsgi.py

注意:

專案的命名要避免與python內建包或django元件重名。

**應該存在**?

將python**放在你的web伺服器的根目錄不是個好主意,因為它可能會有讓別人在網上看到你的**的風險。 這樣不安全。

將你的**放置在web伺服器根目錄以外的地方,例如/home/mycode。

在外部mysite目錄,執行以下命令:

$ python3 manage.py runserver
看到以下輸出表明你已經啟動了django開發伺服器:

performing system checks...

system check identified no issues (0 silenced).

january 17, 2018 - 15:50:53

django version 2.0, using settings 'mysite.settings'

starting development server at

quit the server with control-c.

這是乙個用純python寫的輕量級web伺服器。 我們在django中內建了它,這樣你就可以在不配置用於生產環境的伺服器 —— 例如apache —— 的情況下快速開發出產品,直到你準備好上線。

需要注意的是:不要在任何生產環境使用這個伺服器。

預設情況下,runserver命令在內部ip的8000埠啟動開發伺服器。

使用如下命令更改埠號為8080:

$ python3 manage.py runserver 8080
請在瀏覽器位址列輸入: 檢視埠修改後的執行效果。

注意:

以這種方式更改的埠號,會重新啟動開發伺服器,並且更改效果只在伺服器執行期間有效。伺服器以預設方式(runserver之後不加埠號)重啟之後,會恢復為8000.

開發伺服器啟動之後,修改並儲存**,runserver伺服器會自動過載,使**生效。 但是,某些操作(如新增檔案)不會觸發重新啟動,因此在這種情況下您必須重新啟動伺服器(這塊需特別注意:後面的靜態檔案處理時,需要新增一些檔案,是必須要重啟伺服器的,不然操作不會生效)。

專案已經建立好了,接下來就要建立程式了。

專案和應用程式有什麼區別? 應用程式是一種web應用程式,它可以執行某些操作,例如weblog系統,公共記錄資料庫或簡單的民意調查應用程式。 專案是特定**的配置和應用程式的集合。 專案可以包含多個應用程式。 乙個應用程式可以在多個專案中。

django帶有乙個實用程式,可以自動生成應用程式的基本目錄結構,因此您可以專注於編寫**而不是建立目錄。

要建立您的應用,請確保您與manage.py位於同一目錄中,然後輸入以下命令:

這將建立乙個名為polls的目錄,其布局如下:

polls/

__init__.py

admin.py

migrations/

__init__.py

models.py

tests.py

views.py

該目錄結構將容納我們的投票應用程式。

新增檢視在polls/views.py中進行:

)這裡新增了乙個最簡單的檢視,頁面上只會顯示括號中的文字。

polls/

__init__.py

admin.py

migrations/

__init__.py

models.py

tests.py

urls.py.

# 新增

views.py

然後,在polls/urls.py檔案中包含以下**:

from django.urls import path

from

.import views

urlpatterns =

[ path(

'', views.index, name=

'index'),

]

下一步是將根urlconf指向polls.urls模組。 在mysite/urls.py中, 加入乙個django.urls.include的import, 然後插入乙個 include()函式 在 urlpatterns 列表中, 如下:

from django.urls import include, path

from django.contrib import admin

urlpatterns =

[ path(

'polls/'

, include(

'polls.urls'))

,# 新增

path(

'admin/'

, admin.site.urls)

,]

include() 函式允許引用其他urlconfs. 每當django遇到include()時,它會截斷與該點匹配的url的任何部分,並將剩餘的字串傳送到包含的urlconf以供進一步處理。

使用include()的目的是為了讓url更易進行熱插拔(plug-and-play)。 由於polls是在他自己的urlconf(polls/urls.py),他們可以被放置在「/ polls /」,或「/ fun_polls /」下,或「/ content / polls /」 ,或任何其他路徑的根,應用程式將仍然工作。

何時使用include()?

包含其他**格式時,您應始終使用include()。 admin.site.urls 是唯一的例外。

啟動伺服器,並在瀏覽器中轉到http://localhost:8000/polls/,您應該看到文字「hello, world. you』re at the polls index.「,這就是index檢視中定義的文字內容。

path()函式傳遞四個引數,兩個引數:route和view,以及兩個可選的引數:kwargs ,和name。

path()引數:view

當django找到匹配的正則時,它會呼叫對應的檢視函式,該函式以httprequest物件作為第乙個引數,並且以route中的任何「捕獲」值作為關鍵字引數。

path()引數:kwargs

任意關鍵字引數可以在字典中傳遞給目標檢視。本教程中不會使用該特性。

path()引數:name

命名您的url可以讓您從django其他地方明確地引用它,特別是在模板中。 這個強大的功能允許您在只操作單個檔案的情況下對專案的url正則進行全域性更改。

django之請求和響應

回想一下,利用http協議向伺服器傳參有幾種途徑?在定義路由url時,可以使用正規表示式提取引數的方法從url中獲取請求引數,django會將提取的引數直接傳遞到檢視的傳入引數中。定義在django.http.querydict httprequest物件的屬性get post都是querydict...

Django的請求和響應

檢視1就是python函式 2函式的第乙個引數 就是請求 和請求相關的 它是httprequest的例項物件 3 我們必須要返回乙個響應 相應是httpresponse的例項物件 子類例項物件 def index request 登入成功之後需要跳轉到首頁 註冊成功後需要跳轉到首頁 from dja...

Django (03)請求和響應

客戶端傳參的幾種方式 傳遞方式 示例 後端獲取方式 資料型別 url路徑 path news 1 2 正則匹配 str查詢字串 news2?category 1 page 2 request.get querydict 請求體 表單型別資料 category 1 page 2 request.pos...