在Django模板中使用字典

2021-06-10 05:15:51 字數 1302 閱讀 3223

大家都知道,在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...