模板渲染底层原理
相关代码:
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晓码阁 版权所有