博客信息

Python Django 模板层(模板渲染底层原理)

发布时间:『 2019-08-20 02:18』  博客类别:Python  阅读(836)

模板渲染底层原理

 

相关代码:

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'})


小李飞刀_Python

加载模板的优先级顺序

 

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',
			            ],
			        },
			    },
			]


小李飞刀_Python


小李飞刀_Python


小李飞刀_Python

 

结论:可以在其他新建应用中,新增templates文件夹,如果新增app中的templates中文件与项目根路径下的templates中的文件重名,优先读取根路径下的;


over......


关键字:     Python       Django  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有