大家都知道,在django的模板中不允許使用字典,只能使用類;雖然我們可以定義類來代替字典,但字典各種各樣,我們總不可能每次都定義不同的類吧?因此,我們需要乙個可以把字典轉化成類的通用方法,讓我們在順利地在模板中使用字典。從本質上來講,在django的模板中使用字典的關鍵之處在於把字典遞迴轉化為類。
#!/usr/bin/python
#-*- coding: utf-8 -*-
def dict2obj(args):
'把字典遞迴轉化為類'
class obj(object):
def __init__(self, d):
for a, b in d.items():
if isinstance(b, (list, tuple)):
setattr(self, a, [obj(x) if isinstance(x, dict) else x for x in b])
else:
setattr(self, a, obj(b) if isinstance(b, dict) else b)
return obj(args)
from django.conf import settings
import os.path
settings.configure(
template_loaders = (
'django.template.loaders.filesystem.loader',
),template_dirs = (
os.path.dirname(__file__),
))child1 =
child2 =
child3 =
child_list = [child1, child2, child3]
parent1 = ;
parent2 = ;
parent3 = ;
parent_list = [dict2obj(parent1), dict2obj(parent2), dict2obj(parent3)]
from django.template import loader, context
t = loader.get_template('demo.tpl')
context_dict =
c = context(context_dict)
print t.render(c)
由於模板檔案不一定要html格式,為簡單起見,我們就使用純文字的方式。
}}
在Django中使用DISTINCT
有時候想用distinct去掉queryset中的重複項,看django文章中是這麼說的 author.objects.distinct entry.objects.order by pub date distinct pub date entry.objects.order by blog dis...
在django中使用logging
django中似乎沒有專門支援logging的module。想在自己開發程式中使用一下log功能,記錄訪問情況,和輸入debug的一些資訊。於是google到一段 使用的python的標準庫logging,目前工作還算正常.url import logging import threading fr...
在Django中使用group by
在django中怎樣使用group by語句呢?找了很多資料,都沒有看到好的,在這裡分享兩種方法給大家 首先,我們先建乙個簡單的模型。class book models.model name models.charfield u 書名 max length 255,db index true aut...