請求訪問流程:HTTP請求通過URL映射器,到達view層,view層能夠從Model層獲取數據,再從Template層取得不變的HTML數據,和Model層取得數據組合,最後返回HttpResponse應答。python
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服務器的入口。
複製代碼
默認配置以下:mysql
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',
}
}
複製代碼
設置好數據庫的配置文件後,須要執行以下命令初始化數據庫。sql
$ python3 manage.py migrate
複製代碼
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
複製代碼
INSTALLED_APPS = [
'books.apps.BooksConfig', # 添加這行信息
}
複製代碼
books/views.py文件django
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
return HttpResponse('<h1>你好,世界</h1>')
複製代碼
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), # 函數
]
複製代碼
books/urls.pybash
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello, name='hello')
]
複製代碼
在項目根目錄下執行以下命令:服務器
$ python3 manage.py runserver
複製代碼
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.app