如何创建简单python脚本的Web界面?

时间:2010-12-10 19:20:55

标签: python

我正在学习python。我创建了一些脚本,用于解析我每天运行的各种网站(因为他们的统计信息已更新),并查看Python解释器中的输出。我想创建一个网站来显示结果。我想要做的是在我去网站时运行我的脚本,并显示一个可排序的结果表。

我已经看过Django并且已经完成了本教程,但对于什么应该是一个简单的问题来说,这似乎是一个非常大的开销。我知道我可以编写一个Python脚本来输出简单的HTML,但这真的是最好的方法吗?我希望能够通过各种列对表格进行排序。

我有多年的编程经验(C,Java等),但只有很少的Web开发经验。

提前致谢。

9 个答案:

答案 0 :(得分:20)

你考虑过Flask吗?像Tornado一样,它既是一个“微框架”又是一个简单的Web服务器,因此它拥有您开箱即用所需的一切。 http://flask.pocoo.org/

这个例子(在主页右侧)几乎总结了代码的简单性:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

答案 1 :(得分:13)

如果要创建非交互式页面,则可以轻松设置任何现代Web服务器以将CGthon脚本作为CGI执行。您的Web服务器将返回python脚本的输出,而不是加载静态文件。

这不是很复杂,但如果您只是在不需要浏览器提交日期的情况下返回输出,这是最简单的方法(在负载下缩放是另一回事)。

如果您没有从浏览器接收任何数据,您甚至不需要python中的“cgi”模块。比这更复杂的事情,您应该使用Web框架。

示例和其他方法

  • Simple Example:最难的部分是网络服务器配置
  • mod_python:减少CGI开销(否则,apache会为每次命中执行python解释器)
  • python module cgi:从浏览器向您的python脚本发送数据。

<强>分拣

Javascript side sorting:我已经使用这个javascript库来添加可排序表。这是添加排序的最简单方法,无需额外的工作或其他HTTP GET。

  

说明:
   下载此文件
   添加到您的HTML中    将class =“sortable”添加到您想要排序的任何表格中    点击标题进行排序

答案 2 :(得分:8)

如果Django开销太大,你可能会考虑Tornado。我已经使用了两者并同意,如果你有一些简单/小事做,而且还不知道Django,它会以指数方式增加你的制作时间。另一方面,你可以在几个小时内“获得”龙卷风,并在一两天内完成一些相对简单的事情而没有任何经验。至少,这是我的经验。

请注意,Tornado仍然是一个权衡:你可以获得很多简单来换取你获得的功能和快捷方式的巨大聚宝盆。

PS - 除了作为一个'微框架'之外,Tornado也是它自己的网络服务器,所以没有wsgi / mod-cgi / fcgi ....只需编写你的请求处理程序并运行它。请务必查看分发中包含的演示。

答案 3 :(得分:6)

你见过bottle框架吗?它是micro framework,非常简单。

答案 4 :(得分:3)

Django是一个很大的web框架,意味着包含大量的东西,因为你经常需要它们,即使有时你不需要它们。

看看Pyramid,早先称为BFG。它要小得多。 http://pypi.python.org/pypi/pyramid/1.0a1

要检查的其他微框架在这里:http://wiki.python.org/moin/WebFrameworks

另一方面,在这种情况下,它可能也是矫枉过正的。听起来你可以每十分钟运行一次脚本,并编写一个静态HTML文件,然后只使用Apache。

答案 5 :(得分:3)

如果我正确理解了您的要求,您可能会发现Wooey非常有趣。

Wooey是一个A Django应用程序,可为Python脚本创建自动Web UI: #12071

您可以在这里查看演示: http://wooey.readthedocs.org

答案 6 :(得分:1)

如果您不愿意编写自己的工具,那么有一个非常先进的工具来执行您的脚本:http://rundeck.org/ 它起步非常简单,也可以针对复杂场景进行配置。 对于自定义视图的要求(具有可排序结果),我相信您可以实现一个简单的插件,用于将脚本输出转换为html元素。

另外,对于简单的设置,我可以推荐自己的工具:https://github.com/bugy/script-server。它没有大量的功能,但对最终用户来说非常容易,并且支持交互式执行。

答案 7 :(得分:0)

如果您不需要来自浏览器的任何输入,这听起来像一个几乎静态的网页,恰好每天更改一次。您只需要一些方法就可以从您的脚本中获取html,在您的网络服务器可以访问它的位置。)

所以你要使用某种形式的templating;如果您需要在单个页面上方使用某种结构,那么static site / blog generators可以输出您的输出,例如Markdown格式,并调用他们的make html等。< / p>

答案 8 :(得分:0)

您可以使用DicksonUI https://dicksonui.gitbook.io DicksonUI更好 或Remi gui(在Google中搜索) DicksonUI更好。 我是DicksonUI的作者