本文共 3700 字,大约阅读时间需要 12 分钟。
模板技术本质上就是静态的html,为了让里面的内容可以动态变化,把里面变成一些填空题,然后准备一下数据,通过特殊手段传进去,这样就可以通过问系统加载到模板,把里面的内容填充好。
在python中需要把这些写好的模板放在一个特殊的目录中,这就是模板目录 写个dirs,将这个目录作为整个模板的搜索路径,但是搜索完整个目录还搜索其他吗,就看你要不要用app_dirs了,如果写了,就会到你已经注册的应用当中搜索模板。 如果一般不需要为这个应用单独写模板的话,上面这个目录的模板也就基本够用了,大多数项目都是把模板集中放这里了 这是模板的搜索路径 模板的本质就是给html,掏空,往里面填数据,如何找数据,第一种是给个字典按key来找。 两个大括号表示其实是用正则,来把你要填写的内容插入进去,形成一个大的字符串,模板技术本质上是这样的。 PHP.JSP,ASP全是这样的开发方式,在这里叫模板技术。 这种有一个坏处就是前后端不分离模板处理分两步,第一步跟文件系统打交道,找到模板。第二步渲染,所谓渲染就是把这些空填满,填满之后该response,response。本质上要return httpresponse
response之前必须先告诉对方responseheader是什么,最后再发body,body有可能很大 快捷函数render,讲模板的时候可能会用到httpresponse,render,但是到后来就 不用了,因为我们用前后端分录restful风格的api,这种风格传输的数据是json,所以jsonresponse是我们要用的东西counter是从1开始,带0的是从0开始
还提供了一些其他东西,第一行最后一行
提供了两个变量,让我们知道是第一行还是最后一行,可能第一行做表头,最后一行做合计 这里建议不要做复杂操作,把复杂操作在外面处理好了再放过来,这些代码都是服务器代码,消耗服务器资源,有些代码可以让它在客户端做,把html推给客户端,让js来完成也可以,到js就变成数组了,让这个数组放到js来倒着打印 结合之前的变量可以访问 循环嵌套时调外层循环的东西 还可以用empty,reversed,empty类似else语法,容器是否为空执行,也就是没有数据,防止什么都不打印,让用户迷惑 两层嵌套 外层变量也可以放到里面来 item拿过来行号,后面解构即可 counter0是从0开始的 是否首行是否末行,revcounter0倒转序号 依然倒转,但是到1为止们这里用的ul li,完全可以嵌套到table试试,一个表格是一个table标签,每一行是tr标签,每一列是td标签,一行行写就是循环tr标签,在tr标签内循环td标签愿意使用这个相等就这个语法
这个变量如果等于sitenews就打印,否则打印其他的,等价于if section ==’sitenews‘ csrf,之前在settings里禁用了 要玩起来,就把这个注入进去 试试写进来会有什么效果 没看到东西,但是不代表不存在、这是一个表单的控件,表单提交采用默认post提交,也就是做了一个表单的隐藏控件,如果在外面套了一个form表单,就会在submit提交的时候把这个hidden一并传回来,如果post没有提交的话,这个中间件就会拦截,post不安全,因为开启了csrf中间件,就需要验证,没有就过不来
其实还做了其他事情,cookie里有多出来的,csrftoken
这是模板里的注释,不会输出到html中 提一个需求,b可以拿到,但是能否转换成大写,或者有些长度太长了,想要截断下 所以就有过滤器,跟linux的管道几乎一样,加个竖线 类似把前面的变量通过管道传过来,upper进行转换成大写,然后输出给我们,所以提供了大量的过滤器函数 过滤像管道一样,其实可以套接在一起的 mykist|first|upper,从里面取第一个元素,然后upper 想要前30个字符,truncatewords就是截取掉,这个参数习惯用引号引起来 join链接起来,用-号 100是真 还有一个none,如果none就用none不用false了 再加一个特殊的变量写成e是等于false还是true
等效false 后面再加none 如果写了第三个,有none就按none来,没写就是等效fasle就是false。就是none是特殊值,yes or no 加100 建议不要做复杂操作,还是处理好数据让它直接显示即可,但是有些事情还是需要让它做,有自己的语法 转义用的 想知道长度,相当于取length 判断这个东西的长度是否大于1 变量等价于false的时候,就可以使用缺省值 只有none的时候才使用缺省值 能否被3整除 100能否被三整除 官网language有个中文可以选择中文 太多了,缺什么过来找即可 时间格式化特别不一样,到模版页里面去找date 现在做一个模版练习题,把字典中的从列表,用ul输出多行,要求奇偶行颜色不同 模版使用,调用shortcuts,调render函数,render函数第一个放request,第二个模版名,模版在settings里,dirs里用os.path。join(base——dir)和tempelates加起来。在跟下建立一个templates目录,右键在里面建立一个index.html,下面就可以使用内部了,url,然后循环起来,不过就是让奇偶行颜色不同,先把c逐行打印出来 先把每个数据增100,要在模版中增100转载地址:http://razgn.baihongyu.com/