Django從理論到實戰(part18)--配置templates文件夾路徑

學習筆記,僅供參考

參考自: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/發起請求:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章