Django Handy Notes
如何关闭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 %}
static
To link to static files that are saved in STATIC_ROOT Django ships with a static template tag.For example:
{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>
添加自定义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)