class BookConfig(ModelStark): def edit(self, obj=None, is_header=False): if is_header: return "操作" return mark_safe("<a href='/stark/app01/book/%s/change/'>编辑</a>" % obj.pk) def delete(self,obj=None,is_header=False): if is_header: return "删除" return mark_safe("<a href='/stark/app01/book/%s/delete/'>删除</a>" % obj.pk) list_display = ["title", "price","publish", "authors", edit, delete] site.register(Book, BookConfig) site.register(Publish) site.register(Author)
与safe性质相同
不带safe的,将内容原样输出
带safe的,是将内容当做html进行解析。
如果一个内容让用户输入的,一个懂程序的用户恶意写入一个死循环框的js代码,然后你还认为这个safe是安全的,网页直接废掉了。
所以一般我们传递给前段模板的,才有可能使用safe,如果是用户输入的内容,进行显示时肯定不会使用safe,直接原样输出。