學習筆記,僅供參考
參考自:Django打造大型企業官網;
本系列Blog以應用爲主,理論基礎部分我在後端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,儘量詳細的記錄一下。
配置templates文件夾路徑
在項目的settings.py
配置文件中,有一個TEMPLATES
列表,這個列表中包含了模板引擎的配置,模板查找路徑的配置,模板上下文的配置等:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
- 參數解釋
DIRS
:是一個列表,在這個列表中可以存放所有的模板路徑,以後在視圖中使用render
或者render_to_string
渲染模板的時候,會在這個列表的路徑中查找模板,例如:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
#設置的路徑:項目的絕對路徑/templates
#BASE_DIR全局變量,可以動態的獲取項目絕對路徑,無論我們把項目遷移到哪裏
APP_DIRS
:默認爲True
,這個設置爲True
後,Django會於APP
下的templates
文件夾中查找模板(前提是APP已經在INSTALLED_APPS
列表中安裝),我們在INSTALLED_APPS
列表中安裝的app如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'book',
'cms',
'front',
]
- 模板查找順序
對於代碼render('list.html')
,Django會先在DIRS
列表的路徑中依次查找有沒有這個模板,如果有,就返回該模板文件。
如果在DIRS
列表中所有的路徑下都沒有找到該模板文件,那麼Django會先檢查當前這個視圖所處的app
是否已經安裝,如果已經安裝了,那麼就先在當前這個app
下的templates
文件夾中查找模板,如果沒有找到,那麼會在其他已經安裝了的app
中查找。如果所有路徑下都沒有找到,那麼會拋出一個TemplateDoesNotExist
的異常。
- 舉個例子
現在,我們利用模板來寫一個頁面。
首先,在主項目文件夾下創建templates文件夾,並在其中創建我們的第一個模板文件index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>小黃之家</title>
<style>
h1 {
color: pink;
}
</style>
</head>
<body>
<p>
<h1>
兔子喜食草
</h2>
<p>
一般家庭飼養的兔子要注意食物的提供,因爲幼兔沒有飽感。
蔬菜本來是不建議給幼兔喫的,容易得腸炎,成年後纔可以適當提供
</p>
</p>
</body>
</html>
在主urls.py中創建一個路由:
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.page),
path('login/', views.login, name = "signin"),
path('template/', views.template),
]
在主views.py中創建一個視圖函數:
def template(request):
return render(request, 'index.html')
向http://127.0.0.1:8000/template/發起請求: