从Web运行Python脚本

时间:2013-02-15 16:22:31

标签: python web-services web-applications web python-2.7

近一年来,我一直在绊倒同样的问题。我总能找到解决问题的方法,但我已经厌倦了寻找工作。

我需要的是在服务器上运行python脚本的Web页面(更好的HTML,而不是PHP或ASP)上创建一个按钮。我也希望能够让这个按钮从表单向脚本发送信息。

我需要在本地主机上以及通过Amazon Cloud上托管的Web服务执行此操作。我将无法在Amazon Cloud服务上安装任何额外的东西,例如PHP或CGI。

我真的很喜欢一个简单的解决方案,我是python的专家,我可以编写吹口哨的网页,但我找不到解决这个问题的简单方法。

我理想的解决方案就像邮件标记:

<a href="mailto:someone@example.com?Subject=Hello%20again">Send Mail</a>

除了:

<a href="myscript.py?Subject=1234">Run Script</a>

现在我非常怀疑这样的解决方案存在,但我能做得很好。

我正在尝试运行的脚本:

  1. 从用户
  2. 返回唯一ID
  3. 将ID发送到GIS程序,该程序根据ID创建地图(ID选择地图区域)
  4. 然后将地图导出为PNG,写入HTML文档,然后在新标签中为用户显示。
  5. 编辑---------------------------

    感谢@Ketouem的回答,我找到了一个很好的解决方案。我会在这里发布一些代码,以便其他人可以受益。确保你下载了python的Bottle Module,它很棒。

    # 01 - Import System Modules
    from bottle import get, post, request, Bottle, run, template
    
    # 02 - Script Variables
    app = Bottle()
    
    # 03 - Build Temporary Webpage
    @app.route('/SLR')
    def login_form():
        return '''<form method="POST" action="/SLR">
                    Parcel Fabric ID: <input name="UID" type="text" /><br />
                    Save Location: <input name="SaveLocation" type="text" value="D:/Python27/BottleTest/SLR_TestOutputs"/><br />
                    Air Photo On: <input name="AirPhoto" type="checkbox"/><br />                
                    Open on Completion: <input name="Open" type="checkbox"/><br />
                    Scale: <input name="Scale" type="text" value="10000"/><br />
                    <input type="submit" />
                  </form>'''
    
    # 04 - Return to GIS App
    @app.route('/SLR', method='POST')
    def PHPH_SLR_Script():
        # I won't bother adding the GIS Section of the code, but at this point it send the variables to a program that makes a map. This map then saves as an XML and opens up in a new tab.
    
     # 04 - Create and Run Page
    run(app, host='localhost', port=8080)
    

1 个答案:

答案 0 :(得分:7)

您可以使用Bottle:http://bottlepy.org/docs/dev/index.html这是一个轻量级的Web框架