2012年04月09日 星期一 15:52
夏船长,请问Django在admin中如何在.py后台程序中使用类似模板过滤器的safe来完全显示html代码? 比如说,我设计了一个产品模型,并希望在admin的products模型管理列表中,有一列专门用来展示商品图片,那么就要在models.py中定义了一个输出:return '<img src="%s" width="100" />' % xxxobj.photo_url 的def函数,然而一旦用在admin管理中,所有html标签都会自动被模板机制过滤掉! 我想改模板并用上|safe过滤器是硬编码,肯定很麻烦,所以最好还是能够在models.py后台程序中能直接show出img标签出来,不被模板机制过滤我的html标签,请问大家都是如何应对这类需求的呢?!夏船长有好招推荐吗?
2012年04月09日 星期一 15:55
在百度提问,几乎无解,都是说模板标签|safe的~ ~ ~ 可是在admin中,对模板标签动手脚似乎不像好方法~
2012年04月10日 星期二 23:53
django为了安全性,模板默认是自动escape的。一种方案可以在模板中加入
{% autoescape off %} {{ body }} {% endautoescape %}
另外的方案是在models.py输出的时候使用django.utils.safestring.mark_safe()。
return mark_safe('<img src="%s" width="100" />' % xxxobj.photo_url)
2012年04月13日 星期五 00:15
看到夏船长的回复了,谢谢!我之前用过您说的
return
mark_safe(
'<img src="%s" width="100" />'
%
xxxobj.photo_url) 方法,但这回再试了一次依然还是不行,结果在admin中依然被转义,依然无法显示图片! 会不会在admin里就是不灵呢?? 我这次多尝试了一下在正常的模板显示中,船长这招
return
mark_safe
是可用的。。。目前主要是做后台 admin 的显示,就完全没用了…… 不知船长在做admin时是否有什么心得体会,感觉admin控制起来还是很困难~
2012年04月20日 星期五 01:03
django的admin复杂一点的逻辑就比较麻烦了,一般产品级就不要用了
Zeuux © 2024
京ICP备05028076号