万网网站空间费,网站建设付款方式,init wordpress,技智网站建设小编一.前言
前面我们讲了视图#xff0c;我们今天来讲一下模板#xff0c;模板其实也就是视图中render返回的html进行的渲染#xff0c;然后展示到浏览器页面上去#xff0c;那我们今天就来和大家来说一下模板的基本用法
二.寻找html模板
这个也就是我们前面说了的找html我们今天来讲一下模板模板其实也就是视图中render返回的html进行的渲染然后展示到浏览器页面上去那我们今天就来和大家来说一下模板的基本用法
二.寻找html模板
这个也就是我们前面说了的找html前面已经说过了我这里再说一遍 TEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, 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, ], }, }, ] 优先去项目根目录 每个已注册的app的templates目录找。 如何选择 简单的项目模板都放在根目录。 复杂的项目模板放在各自的app中公共部分放在templates目录。 三.模板处理的本质
要学习模板我们就得先知道模板处理的本质和模板的基本用法
本质就是渲染完成后生成字符串展示在页面上 基本用法就是在视图里面返回一个字典html里面用{{}}引入想要的名字再进行替换但是这里有一个要注意的是他替换是对文本进行完整替换并不会带上引号这里举个例子大家就知道了 当我们想弹出名字的时候这时候我们打开浏览器发现没有弹出我们点开检查 发现他说往日情怀酿作酒没有定义我们再看看这个html怎么个回事 发现他并没有把引号加上去他这个是对内容进行完整替换而不会加上引号如果我们要带上引号 这样我们进去就有弹框拉
但是当我们导入一个js的时候 我们发现js里的内容并没有被渲染这是因为浏览器加载后先渲染html的内容再来加载js此时并不能起到渲染作用所以引入js中需要注意如果我们非得在js中使用返回的内容可以通过在html的script标签定义window全局变量在js中使用全局变量或者在js中使用ajax请求来获取数据这里就不和大家具体说了
四.常用语法 这里就给出代码和注释方便大家使用
from django.shortcuts import render
from django.shortcuts import render, HttpResponse,redirect
from django.urls import reverse
from django.http import JsonResponse
from django.views import Viewclass Person(object):def __init__(self,name,age):self.namenameself.ageagedef getdata(self):return 我是一个人类def getname():return 往日情怀酿作酒def show(request):return render(request,web/login.html,{n1:往日情怀酿作酒,n2:[请关注,感谢,收藏],n3:{name:往日情怀酿作酒,age:20,hobby:play coomputer},n4:[{id:1,name:Mr.3,age:18},{id:2,name:Mr.2,age:18},{id:3,name:Mr.2,age:18}],n5:Person(Mr.7,28),n6:getname})
{% load static %}
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title/head
body{#n1直接写#}
h1{{ n1 }}/h1
hr{#n2是一个数组可以通过for循环遍历每一个值 取出来要加上.#}
h1{{ n2.1 }}/h1
ul{% for i in n2 %}li{{ i }}/li{% endfor %}
/ul
hr{#n3是一个字典如果不加上item那么就只能去到键取值也要用.#}
ul{% for k,v in n3.items %}li{{ k }}{{ v }}/li{% endfor %}
/ul
hr{#n4是一个列表嵌套着字典这种可以制作一个表格#}
table border1{% for i in n4 %}trtd{{ i.id }}/tdtd{{ i.name }}/tdtd{{ i.age }}/td/tr{% endfor %}
/table
hr{#n5是一个类也可以直接.他的属性和方法,并且函数不要加上括号#}
h1{{ n5.name }}/h1
h1{{ n5.age }}/h1
h1{{ n5.getdata }}/h1
hr{#n6是一个函数也可以直接执行但是默认是不让传递参数#}
h1{{ n6 }}/h1
hr/body
/html 效果如上图我们需要主义的点 1.引用django字典返回的值需要再外面加上{{}} 2.字典和列表都是通过.来取值而不是通过[] 3.函数默认就是给执行了我们在html里面不需要再加上括号并且默认是不支持传递参数的 五.内置函数 常用的就这些这些是django中自带的函数默认都是不支持传递参数的用的都很少一会才是和大家说如何自定义函数并且支持传递参数
六.自定义模板函数
首先要确保我们的app是已经注册的前面我们也已经注册了接下来就是要创建一个目录名叫templatetags名字一定要叫这个 然后再创建再里面创建一个py文件作为以后要导入的名字py文件里面先要加上固定代码 from django import template
registertemplate.Library()这样我们就能够定义我们想要的函数了
6.1 filer
filter允许的参数是1-2个 可以发现我们把|前面的当成是第一个参数函数名字后面:是第二个参数 6.2 simple_tag
simple_tag支持任意个参数 他的调用方式和filter不一样他是{%%}和前面的load一样他先写函数名后面用空格间隔第一个参数第二个参数等等
6.3 inclusion_tag
参数无限制返回的是一个html片段 这个也是{%%}来调用
七.母版和继承
当我们写html的时候发现有许多重复的地方我们就可以把重复的地方写成母板有需要的地方去继承就行了 我们用 block来隔离独立的内容继承用extends关键字 通常我们都会继承一下js和css
八.模板的导入 通过include直接进行导入
九.总结
这里也都是讲了知识点大家所见即所得记得点赞关注收藏不记得了记得来看吖
十.补充
下一期将和大家讲解一下中间件期待大家的点赞关注加收藏