热门关键字:
jquery > jquery教程 > jquery教程 > django template language入门

django template language入门

347
作者:管理员
发布时间:2021/3/24 19:41:25
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=4274
  django_template


  The Django template language


  template模板是一个简单的文本文件,可以生成文本格式(HTML,XML,CSV) 模板包含变量,这些变量将会被赋值


  例如:


  Variables


  像这种形式的就是变量。当模板引擎看到一个变量,会给它赋值并用赋值的结果来替换它。dot(。)号可以访问变量的属性 如将会用sectioon对象的title属性来替换 如果有不存在的变量,模板会插入TEMPLATE_STRING_IF_INVALID,默认是''空字符串 "bar" : 这种会被表示成字符串而不会使用bar的值去替换


  Filters


  过滤器用来修改变量以输出  将会将name变量以小写形式输出 过滤去可以串起来用,如


  过滤器也可以带参数,如: 输出bio变量的前30个字母


  参数如果包含空格则必须用引号括起来,如以逗号和一个空格的形式将一个list连起来:


  default: 如果变量是错误或者空的,将会使用默认值,如:


  length: 返回变量的长度,可用于list或者string


  filesizeformat: 将数值格式化为字节大小,如'13 KB', '4 MB'等,如输出117.7 MB


  Tags


  tags比变量稍微复杂,可以生成文本输出,可以控制逻辑和循环,也可以将一些外部信息导入模板以后给变量使用


  一些标签包括开始和结束标签,形如


  for: 控制循环,访问列表中每个元素,eg:


  上面这个for标签可以访问列表中的每个运动员,它包括开始和结束标签


  if, elif, else


  if标签可以和过滤器还有一些运算符一起使用:


  Comments


  eg:  内容只有hello


  Template inheritance


  这是django模板最强大也是最复杂的部分,允许我们创建一个基础的骨架模板,包含网站的基础元素,然后我们可以定义子模板来进行重载 base.html:


  一个子模板:


  这里用了extend标签表明是从基础模板扩展来的,模板引擎检测到base.html中的几个block标签,就会用子模板中这些blocks的内容进行替换,得到这样一个输出:


  注意:


  如果使用extends标签,则它必须是文本中的第一个模板标签


  有时候我们想对parent模板中的内容进行一些修改,可以通过来得到这些内容


  Automatic HTML escaping


  有时候用户提交的数据会有无法想象的事情发生,如看起来只是简单的显示用户名,但是如果用户输入的名字是 则模板会渲染成:


  会导致浏览器弹出提醒框! 这会使网页存在被攻击的漏洞,如XSS(Cross Site Scripting)攻击等


  django提供两种方案来解决这个问题


  一种是给一些不信任的变量添加escape过滤器,使它们变得没有危害,但问题是我们需要自己手动来设置而且容易产生遗漏


  第二种是让django自动来escape




如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:jquery
友荐云推荐