关闭Django模板的自动转义

Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素 被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本, 如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器 “|safe”的方式告诉Django这段代码是安全的不必转义。

比如:

<p>这行代表会被自动转义</p>: {{ data }}
<p>这行代表不会被自动转义</p>: {{ data|safe }}

其中第二行我们关闭了Django的自动转义。
我们还可以通过{%autoescape off%}的方式关闭整段代码的自动转义,比如下面这样:

{% autoescape off %}
    Hello {{ name }}
{% endautoescape %}
 

JSON 操作

 JSON.parse(str)
parse用于从一个字符串中解析出json对象,如

var str = '{"name":"huangxiaojian","age":"23"}'

JSON.parse(str)

结果:

Object
    1. age: "23"
    2. name: "huangxiaojian"
    3. __proto__: Object

注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。

 
stringify()
用于从一个对象解析出字符串,如

var a = {a:1,b:2}

结果:

JSON.stringify(a)

"{"a":1,"b":2}"

----------------------------------------------------------------
一对一和一对多
1、搜索条件使用 __ 连接
2、获取值时使用 . 连接
 
ManyToMany表
 
#反向查询
_set
注意:xx_set中的【_set】是多对多中的固定搭配
 
select_related()

对于一对一字段(OneToOneField)和外键字段(ForeignKey),可以使用select_related 来对QuerySet进行优化
作用和方法

在对QuerySet使用select_related()函数后,Django会获取相应外键对应的对象,从而在之后需要的时候不必再查询数据库了。

select_related() 接受可变长参数,每个参数是需要获取的外键(父表的内容)的字段名,以及外键的外键的字段名、外键的外键的外键…。若要选择外键的外键需要使用两个下划线“__”来连接。

小结

  1. select_related主要针一对一和多对一关系进行优化。
  2. select_related使用SQL的JOIN语句进行优化,通过减少SQL查询的次数来进行优化、提高性能。
  3. 可以通过可变长参数指定需要select_related的字段名。也可以通过使用双下划线“__”连接字段名来实现指定的递归查询。没有指定的字段不会缓存,没有指定的深度不会缓存,如果要访问的话Django会再次进行SQL查询。
  4. 也可以通过depth参数指定递归的深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外的字段,Django会再次进行SQL查询。
  5. 也接受无参数的调用,Django会尽可能深的递归查询所有的字段。但注意有Django递归的限制和性能的浪费。
  6. Django >= 1.7,链式调用的select_related相当于使用可变长参数。Django < 1.7,链式调用会导致前边的select_related失效,只保留最后一个。

JS 字符串拼接(+)

eg:

$("#div").append("<table><tr align='center'>"+"<td>"+"拼接的DIV内容"+"</td>"+"</tr></table>");
   
 

最新文章

  1. java反编译获取源码
  2. Hibernate的关联映射
  3. Mac、Linux更换命令行svn diff为P4Merge、vimdiff
  4. spoj1811 Longest Common Substring
  5. nodejs net模块实现socket
  6. sql Server 使某一列的值等于行号
  7. linux 下查看文件个数及大小
  8. ServletContext获取项目真实路径
  9. 1236 hdu排名
  10. Android应用程序进程启动过程的源代码分析
  11. Nodejs之package.json介绍说明
  12. ConvertUtils.register(new DateConverter(null), java.util.Date.class)使用
  13. js 引入外部文件之 script 标签
  14. [JS] 四角度旋转特效
  15. 解决git报ssh variant &#39;simple&#39; does not support setting port
  16. Algorithm——最长公共前缀
  17. P1641 [SCOI2010]生成字符串
  18. SSL步骤
  19. import * as obj from &#39;xx&#39;
  20. 栈经典列题:Rails

热门文章

  1. LeetCode——688. Knight Probability in Chessboard
  2. Windows下面Node和NPM的绿色安装及配置
  3. 一、新建springBoot项目
  4. 为什么我说IPFS社区从卖矿机开始,就是错的
  5. Tree Traversals Again
  6. c++ auto 属性
  7. Magic xpa 3.x很容易将数据导出到Excel中
  8. Android给控件添加默认点击效果
  9. JAVA 8 函数式接口--Consumer
  10. 用Itextsharp 组件导出PDF 的文档的方法