Django專案是由許多Application(App
)組成,每一個App包括許多Views函式(Views Function
),構成Django Web App的各種功能。
舉例來說,我們要開始進行的專案,是一個部落格系統平台,它最終上線,有兩大子系統,分別是文章管理與會員管理,呈現方式會是
在這個例子中,article
跟member
就是我們將建立的App,他們各自有new``edit
、register
manage
的Views函式功能
讓我們進一步說明Django的運作機制,流程如下。
~webapps/blog/
python manage.pystart app main
,如此就可順利新建一個Appmain
每個被新建的App,預設架構目錄如下:
main/
migrations/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
各目錄說明如下
migrations/
: 資料庫遷移目錄,儲存此App的資料庫遷移程式__init__.py
: 指明這是一個Python Package,所以這個App可以被其他程式匯入admin.py
: 管理者介面相關的資料表apps.py
: 本App的設定models.py
: 資料模型tests.py
: 測試程式views.py
: 處理HTTP request的程式碼我們要註冊App main
,到INSTALLED_APPS List,這個App才能順利被啟用。
在blog/settings.py
加入App名稱,如第五行
...
INSTALLED_APPS = [
...
'django.contrib.staticcifiles',
'main'
]
...
views.py
每個新建的App都有一個預設的view.py檔案,我們打算將顯示首頁的功能,以main()函式來處理
main/views.py
from django.shortcuts import render
from django.http import HttpResponse
def main(request):
# Show Hello World HTML to home page
html =
'''
<!doctype html>
<html>
<head>
<title> My Blog </title>
<meta charset='utf-8'>
</head>
<body>
這是HTML版本的Hello World!
</body>
</html>
'''
return HttpResponse(html)
Note:
函式HttpResponse()常見return值
- 200: 請求成功
- 302: 轉址成功
- 304: 文件未修改
- 404: 找不到網頁
- 500: 應用程式錯誤
main
blog/urls.py
from django.contrib import admin
from django.urls import path, include, re_path
from main import views
urlpatterns = [
path('admin/', admin.sites.urls),
path('main/', include('main.urls', namespace='main')),
re_path('.*', views.main),
]
說明如下:
main/urls.py
from django.urls import path
from main import views
app_name = 'main'
urlpatterns = [
path('', views.main, name='main'),
]
localhost:8000/main/
,可以看到Hello World的頁面,表示建立成功。我們新建了第一個App,顯示內容,不過根據Django規範的MTV設計架構
,Views
和Templates
應該要分開,不應該將HTML內容直接寫在Views
,而是寫在Template
中才對。
下一篇我們將正式介紹Django的MTV設計架構
,並且透過Template
來管理網站的資料呈現。