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/發起請求:
總結
以上是生活随笔為你收集整理的Django从理论到实战(part18)--配置templates文件夹路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钯金是什么 什么是钯金
- 下一篇: Django从理论到实战(part19)