Django handy notes

Django Handy Notes


如何关闭Django模板的自动转义

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

这行代表会被自动转义

: {{ data }}

这行代表不会被自动转义==

: {{ data|safe }}

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

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

static

To link to static files that are saved in STATIC_ROOT Django ships with a static template tag.For example:

{% load static %}
Hi!

{% load static %}
{% static "images/hi.jpg" as myphoto %}


添加自定义template filter标签

在项目目录下建立如下的文件夹结构

    templatetags/
    __init__.py
    eryatags.py

eryatags.py:

    from django import template 
    
    register = template.Library()
    
    from util.cryption import Cryption
    
    @register.filter(name='encrypt')
    def encrypt(value):
        if isinstance(value, long) or isinstance(value, int):
            value = str(value)
        return Cryption.encrypt(value)
        

使用
引入filter文件:
{% load eryatags %}
应用
{{ dev.id|encrypt }}


model customized saving behavior

If you want customized saving behavior, you can override this save() method.

Model.save(force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None)

admin

你可能感兴趣的:(Django handy notes)