给django admin加上在线编辑运行python代码的功能



给django admin加上在线编辑运行python代码的功能

网站后台管理的需求变幻莫测, 可能今天需要统计用户数据, 明天需要计算商品库存, 后天需要置一个标志量来配合一个促销活动. 然而先更新本地程序, 再上传到svn, 再在远端更新, 再重启fcgi, 这太麻烦了. 一个小小的功能, 杀鸡焉用牛刀乎?

于是乎呢, 我就想出了这么个主意. 写了一个我称之为ploader的app. 他的功能就是可以在线编辑python代码并且运行之, 可以储存和管理. 我认为一个很方便的功能是, 它可以同时保存view和template, 也就是说, 你可以在一个界面里, 在线的把html template和python view都写了, 然后一句话即可render之. 还可以控制匿名用户访问, 让他们只看到渲染结果. 完全省去了简单页面的编辑url, 上传template之苦. 理论上说, 他什么都可以做, 只有想不到, 没有做不到, 因为他是万能的python!

让我们看看应用的实例
加一个网站维护工具链接

这是一段普通代码, 统计平均利润, 点debug以后可以直接在这个界面里运行

这是一个简单的群发邮件, 取出所有user的email并且把输入的数据发送给他们.

给django admin加上在线编辑运行python代码的功能_第1张图片这是一个view, 带有自己的template, 允许匿名访问. 用商品数据生成一个简单的促销商品列表页面.


写ploader的程序的时候需要注意几个地方:
1.内部变量, out代表输出和input_data代表输入, 写程序的时候不可以重名.
2.有三个额外的函数可以用, 分别是o(), oo(), render_response(). o可以输出一个变量到文本结果(out), oo可以输出多个变量到文本结果, render_response()则直接把input_data作为template, 渲染之, 然后返回response, 比shortcut还shortcut.

这里是ploader的代码, 没有任何完善和优化, 概念代码, 希望对你有帮助.
http://www.heshould.com/codestore.zip

你可能感兴趣的:(给django admin加上在线编辑运行python代码的功能)