四、建立投票應用程式
安裝命令:
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...