当前位置:首页 > Web开发 > 正文

产生一个替换后的html内容res_html = temp.render(context)# 4.返回应答return

2024-03-31 Web开发

标签:

一、模板的根本配置及使用

【参考】https://docs.djangoproject.com/zh-hans/3.0/topics/templates/

作为Web框架,Django供给了模板,用于编写html代码,还可以嵌入模板代码更快更便利的完成页面开发,再通过在视图中衬着模板,将生成最终的html字符串返回给客户端浏览器。模版致力于表达外不雅观,而不是措施逻辑。模板的设计实现了业务逻辑view与显示内容template的疏散,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。

1.1模板包罗两部分:

静态部分,包罗html、css、js。

动态部分,就是模板语言。
Django模板语言,简写DTL,界说在django.template包中。 创建项目后,在"项目名称/settings.py"文件中界说了关于模板的配置。

# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app1', #【2】注册项目的第1个应用 ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', #【4】设置模板目录 或 'DIRS': [BASE_DIR+'/templates'], 'DIRS': [os.path.join(BASE_DIR,'templates')], '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', ], }, }, ] 1.2模板目录

DIRS界说一个目录列表,模板引擎按列表挨次搜索这些目录以查找模板文件,凡是是在项目的根目录下创建templates目录。

1.2.2模板文件的使用

凡是是在视图函数中使用模板孕育产生html内容返回给客户端。

a) 加载模板文件 loader.get_template
获取模板文件的内容,孕育产生一个模板东西。

b) 界说模板上下文 RequeseContext
给模板文件通报数据。

c) 模板衬着孕育产生html页面内容 render
用通报的数据替换相应的变量,孕育产生一个替换后的标准的html内容。

'''衬着一个模板正常的流程''' def my_render(request, template_path, context={}): # 1.加载模板文件,获取一个模板东西 temp = loader.get_template(template_path) # 2.界说模板上下文,给模板文件传数据 context = RequestContext(request, context) # 3.模板衬着,孕育产生一个替换后的html内容 res_html = temp.render(context) # 4.返回应答 return HttpResponse(res_html) '''使用刚自界说的衬着模板''' def index(request): return my_render(request, 'booktest/index.html') 1.3Django措置惩罚惩罚模板分为两个阶段:

加载:按照给定的路径找到模板文件,编译后放在内存中。

衬着:使用上下文数据对模板插值并返回生成的字符串。
为了减少开发人员反复编写加载、衬着的代码,Django供给了简写函数render,用于挪用模板。

'''但好在系统为我们供给了一个快捷函数衬着模板只需要一步即可:''' from django.shortcuts import render def index(request): return render(request, 'booktest/index.html') 1.4 Django模板加载挨次

views.py界说一个函数衬着一个模板。

配置好urls.py

但不要设置templates里的html模板

先在1.1配置的路径找模板:‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)]

然后在注册的app里找,前提是它们目录下有templates这个文件夹INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘app1‘, #【2】注册项目的第1个应用 ]

'''3.但不要设置templates里的html模板,会有报错,将会展示模板寻找加载的挨次''' Template-loader postmortem Django tried loading these templates, in this order: Using engine django: django.template.loaders.filesystem.Loader: D:\a\django-app\project2\templates\app2\index2.html (Source does not exist) django.template.loaders.app_directories.Loader: C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\contrib\admin\templates\app2\index2.html (Source does not exist) django.template.loaders.app_directories.Loader: C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\contrib\auth\templates\app2\index2.html (Source does not exist) 二、模板语言

模板语言简称为DTL。(Django Template Language)

1. 模板变量

模板变量名是由数字,字母,下划线和点构成的,不能以下划线开头。
使用模板变量:{{模板变量名}}

1.1 模板变量的解析挨次:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31797.html