Django Handy Notes
如何關(guān)閉Django模板的自動(dòng)轉(zhuǎn)義
Django的模板中會(huì)對(duì)HTML標(biāo)簽和JS等語法標(biāo)簽進(jìn)行自動(dòng)轉(zhuǎn)義,原因顯而易見,這樣是為了安全。但是有的時(shí)候我們可能不希望這些HTML元素被轉(zhuǎn)義,比如我們做一個(gè)內(nèi)容管理系統(tǒng),后臺(tái)添加的文章中是經(jīng)過修飾的,這些修飾可能是通過一個(gè)類似于FCKeditor編輯加注了HTML修飾符的文本,如果自動(dòng)轉(zhuǎn)義的話顯示的就是保護(hù)HTML標(biāo)簽的源文件。為了在Django中關(guān)閉HTML的自動(dòng)轉(zhuǎn)義有兩種方式,如果是一個(gè)單獨(dú)的變量我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉(zhuǎn)義。比如:
<p>這行代表會(huì)被自動(dòng)轉(zhuǎn)義</p>: {{ data }}
<p>這行代表不會(huì)被自動(dòng)轉(zhuǎn)義==</p>: {{ data|safe }}
其中第二行我們關(guān)閉了Django的自動(dòng)轉(zhuǎn)義。
我們還可以通過{%autoescape off%}的方式關(guān)閉整段代碼的自動(dòng)轉(zhuǎn)義,比如下面這樣:
{% 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標(biāo)簽
在項(xiàng)目目錄下建立如下的文件夾結(jié)構(gòu)
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 %}
應(yīng)用
{{ 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)