Django从理论到实战(配置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/发起请求:
本文地址:https://blog.csdn.net/m0_37422217/article/details/107117617
上一篇: 数据分析之Numpy库
下一篇: 做SEO工作是否需要参加SEO培训