MVT設計模式
請求訪問流程:HTTP請求經過URL對映器,到達view層,view層可以從Model層獲取資料,再從Template層取得不變的HTML資料,和Model層取得資料組合,最後返回HttpResponse應答。
簡單入門教程
建立專案
1. 在終端下,進入準備存放專案的目錄下執行:django-admin startproject myproject,此時,目錄結構為:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
其中:
myproject:專案的根目錄
manage.py:一個命令列程式,用來管理Django專案
myproject/settings.py:專案配置
myproject/urls.py:配置專案的URL對映器
myproject/wsgi.py:一個WSGI相容的Web伺服器的入口。
複製程式碼
2. Django的專案配置資訊需要儲存到資料庫中,預設使用sqlite3,在myproject/settings.py中設定。
預設配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
舉例:MySQL資料庫配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'djangodb', # 庫名
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
}
}
複製程式碼
設定好資料庫的配置檔案後,需要執行如下命令初始化資料庫。
$ python3 manage.py migrate
複製程式碼
3. 建立應用程式
Django中有專案和應用程式的分別,應用程式可以理解為具有特定功能的一些程式,專案可以包含多個應用程式,例如一個商城,可以把訂單和商品詳細放在兩個應用程式中,各自負責不同的功能。 建立應用程式,在myproject目錄下執行:
$ python3 manage.py startapp books
整個專案的目錄結構如下:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
books/
__init__.py
admin.py
apps.py # 註冊應用
models.py # 模型層
tests.py # 測試相關程式碼
views.py # 檢視層
migrations/ # 資料庫升級產生的檔案存放在此目錄
__init__.py
複製程式碼
4. 第一個Django程式
1)修改myproject/settings.py檔案,新增應用程式資訊
INSTALLED_APPS = [
'books.apps.BooksConfig', # 新增這行資訊
}
複製程式碼
2) 定義檢視函式:引數是request(HttpRequest),返回值是HttpResponse。
books/views.py檔案
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
return HttpResponse('<h1>你好,世界</h1>')
複製程式碼
3) 修改專案的url對映器
myproject/myproject/urls.py
from django.contrib import admin
from django.urls import path, include
import books
from books import urls
urlpatterns = [
path('books/', include(books.urls)), # 函式
path('admin/', admin.site.urls), # 函式
]
複製程式碼
4) 增加應用程式下的url對映器
books/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello, name='hello')
]
複製程式碼
5) 啟動伺服器
在專案根目錄下執行如下命令:
$ python3 manage.py runserver
複製程式碼
6) 訪問http://127.0.0.1:8000/books/hello/,可以看到你好,世界的頁面。
7) 解釋
request先到達myproject/myproject/urls.py的專案URL對映器中,根據path('books/', include(books.urls)),匹配books/,然後請求跳轉到books.urls應用程式URL對映器,根據books/urls.py中的path('hello/', views.hello, name='hello'),匹配'hello/',請求跳轉到views.hello這個檢視函式中,views.hello檢視函式處理業務邏輯,返回應答HttpResponse.