暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

django 中如何将字典变量传给template视图层的JS

丁老师的技术随笔 2020-02-25
972

django中,将view.py中的数据绑定到template中的html 中,我们可以用 render 函数携带 context 参数,复杂的数据结构可以用字典来组织,字典其实就是PHP中的关联数组,java中的map。

目录

1. view.py传递参数 

2. create_task.html 中JS解析参数

3. django 其他过滤器


1

view.py传递参数


view.py 中,定义了一个入口,返回某三层目录,first_level 是第一层,是个列表,second_level 是第二层,是个字典,third_level 是第三层,是个字典,要将 second_levelthird_level  传递给create_task.html,需要先转化成json 数据,然后放到context 里面。

def new_task(request):
context = {}
#读取 目录层级结构
root_path = 'G:\\python\\02-dart\\dart\\'
first_level = get_file_list(root_path)
second_level = {}
for one in first_level:
second_level[one] = get_file_list(root_path+one)
third_level = {}




for k,v in second_level.items():
for sub in v:
third_level[k+sub]=get_file_list(root_path+k+sub)
context['first_level'] = first_level
context['second_level'] = json.dumps(second_level)
context['third_level'] = json.dumps(third_level)
print(second_level)
print('----')
print(third_level)




return render(request, 'create_task.html', context)

2

create_task.html 中JS解析

create_task.html 中JS 解析时,{{ second_level|safe }} 一定要加上safe过滤器,要求不对字符进行转义


<script type="text/javascript">
 
var second_level = {{ second_level|safe }}


    console.log(second_level)
$('#first_level').change(function () {


})

$('#second_level').change(function () {




})
</script>


3

django 其他过滤器



    {{ a|safe }}  于django输出前,要求不对字符进行转义。自动转义关闭时自动失效


  {{ time|date:'Y-m-d H:i:s' }} 格式化输出时间 年月日时分秒


  {{ list|join:',' }} 相当于 ‘,’.join(list)


  {{ str|truncatechars:8 }} 显示内容为5个字符与3个点号 共8个字符


  {{ str|truncatechars:8 }} 同上 显示单位为单词 按空格辨别


  {{ str|length }} str的长度


  {{ list|slice:'0-2' }} 切片索引0-2不含2


  {{ var|default:'xxx' }} 为var设置默认值为‘xxx’


  {{ str|lower }}{{ str|upper }} 输出显示为小/大写


  {{ int|filesizeformat }} 转为内存大小单位 类似于2GB 1TB


END



● 使用Python判断文件下是否有空文件夹

 重要的进程就让Supervisor 来守护吧!

 PHP 实现Redis发布订阅消息及时通讯




关注二维码

获取更多精彩内容

文章转载自丁老师的技术随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论