三一文和

导航

 

关闭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>");

   
 
posted on 2016-04-01 16:04  三一文和  阅读(489)  评论(0编辑  收藏  举报