模板渲染底层原理
相关代码:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^staticread/', include('staticread.urls')),
url(r'^principle/', include('principle.urls'))
]urlpatterns = [
url(r'^query1/$', views.query_view1),
url(r'^query2/$', views.query_view2),
url(r'^query3/$', views.query_view3),
url(r'^query4/$', views.query_view4),
]# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from django.template import Template, Context, loader
# - 方式1
def query_view1(request):
t = Template('hello:{{name}}')
c = Context({'name': 'zhangsan'})
renderStr = t.render(c)
return HttpResponse(renderStr)
# - 方式2
def query_view2(request):
with open('templates/index.html', 'rb') as fr:
content = fr.read()
t = Template(content)
c = Context({'name': 'lisi'})
renderStr = t.render(c)
return HttpResponse(renderStr)
# - 方式3
def query_view3(request):
t = loader.get_template('index.html')
renderStr = t.render({'name': 'wangwu'})
return HttpResponse(renderStr)
# - 方式4
def query_view4(request):
return render(request, 'index.html', {'name': 'zhaoliu'})

加载模板的优先级顺序
settings.py
TEMPLATES = [
{
#渲染引擎
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')] # html模板存放的位置
,
'APP_DIRS': True,
# 当项目下的templates目录中找不到页面会继续到应用包下的templates目录中查找
'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',
],
},
},
]


结论:可以在其他新建应用中,新增templates文件夹,如果新增app中的templates中文件与项目根路径下的templates中的文件重名,优先读取根路径下的;
over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有