• python--第二十天总结(Django的一些注意)


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

       
     
  • 相关阅读:
    Atcoder Beginner Contest075 翻车记
    bzoj1972 猪国杀 大♂模拟
    10月9-11日连续大翻车实录
    10月8日翻车实录
    10月7日考试翻车实录
    四月は君の嘘?人生は君の嘘?
    NOIP模拟 gcd 数学
    NOIP模拟 water 最小生成树
    NOIP模拟 mine DP
    bzoj2064 分裂 状压DP
  • 原文地址:https://www.cnblogs.com/wjx1/p/5345260.html
Copyright © 2020-2023  润新知