05/03
2014

view传递context的方式


通过view的render()方法填充template可以有以下方式:

1.适合于数据量小且静态的数据。在template中直接使用相关键值为标签:

def test1(request):
    return render(request,'test/raw.htm',{
                'name':'Enm',
                'age':22,
                'company': 'Outdoor Equipment',
                'ship_date': datetime.datetime.now(),
                'ordered_warranty': False})

2.通过调用属性的方式传递整个dictionary。但在template中必须使用属性方式:{{ person. name }},{\% for i,k in dict. items \%}

def test2():
    person = {  'name':'Enm',
                'age':22,
                'company': 'Outdoor Equipment',
                'ship_date': datetime.datetime.now(),
                'ordered_warranty': False}

    dict = {"name":"enm","age":"21","school":"szu"}
    return render(request,'test/raw.htm',{ 'person':person, 'dict':dict})

3.使用locals(),locals() 是个字典,直接赋值给变量。很明显这种方式更加优雅和便捷,但缺点就是它会把所有的dictionary都传递,也就是说它默认传递的值可能会比你预想中的多。

template中仍然必须使用属性方式:{{ person. name }},{\% for i,k in dict. items \%}

def test3():
    person = {  'name': 'Enm',
                'age':22,
                'company': 'Outdoor Equipment',
                'ship_date': datetime.datetime.now(),
                'ordered_warranty': False}

    dict = {"name":"enm","age":"21","school":"szu"}
    return render(request,'test/raw.htm',locals())
blog comments powered by Disqus