Django开发者群  - 讨论区

标题:夏船长,请问Django在admin中如何在.py后台程序中使用类似模板过滤器的safe来完全显示html代码

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号