2013-02-15 75 views
6

Tôi đã vấp phải cùng một vấn đề trong gần một năm nay. Tôi luôn tìm cách để làm việc xung quanh nó, nhưng tôi mệt mỏi vì tìm việc xung quanh.Chạy tập lệnh Python từ trang web

Điều tôi cần là tạo một nút trên Trang Web (HTML thích hợp hơn, không phải PHP hoặc ASP) chạy một tập lệnh python trên máy chủ. Tôi cũng muốn khả năng có nút này gửi thông tin từ một biểu mẫu đến tập lệnh.

Tôi cần thực hiện việc này trên máy chủ cục bộ và thông qua dịch vụ web được lưu trữ trên Amazon Cloud. Tôi sẽ không thể cài đặt thêm bất kỳ thứ gì trên dịch vụ Amazon Cloud, chẳng hạn như PHP hoặc CGI.

Tôi thực sự thích một giải pháp dễ dàng, tôi là chuyên gia về python và tôi có thể viết các trang web có tiếng còi, nhưng tôi không thể tìm ra giải pháp đơn giản cho vấn đề này.

giải pháp lý tưởng của tôi sẽ là một cái gì đó giống như mail cho tag:

<a href="mailto:[email protected]?Subject=Hello%20again">Send Mail</a> 

Trừ:

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

Bây giờ tôi rất nghi ngờ một giải pháp như vậy tồn tại, nhưng tôi cũng có thể mơ ngay.

Các kịch bản tôi đang cố gắng để chạy:

  1. Trả về một ID độc đáo từ người sử dụng
  2. Gửi ID cho một chương trình GIS tạo ra một bản đồ dựa trên ID (ID lựa chọn lĩnh vực bản đồ)
  3. Bản đồ sau đó được xuất sang PNG, được viết thành tài liệu HTML và sau đó được hiển thị cho người dùng trong tab mới.

EDIT ---------------------------

Nhờ @Ketouem câu trả lời tôi đã có thể tìm thấy một lớn giải pháp cho vấn đề của tôi. Tôi sẽ đăng một số mã ở đây để những người khác có thể hưởng lợi. Hãy chắc chắn rằng bạn tải về các mô-đun chai cho python, tuyệt vời của nó.

# 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

bạn có thể chạy một daemon sử dụng web.py, bình hoặc kim tự tháp? –

+0

Tôi đã gặp sự cố khác về vấn đề này, nếu có ai đó có thể giúp nó nằm ở đây [http://stackoverflow.com/questions/15010556/python-bottle-issues-when-accessed-externally) –

Trả lời

5

Bạn có thể sử dụng Bottle: http://bottlepy.org/docs/dev/index.html mà là một khuôn khổ web nhẹ

+0

Hmm, cái này là một giải pháp khá thú vị, tôi sẽ phải thử nghiệm nó trước khi tôi thực sự biết nếu nó sẽ làm việc cho tình hình của tôi mặc dù. –

+0

Giải pháp tuyệt vời, tôi sẽ thêm mã của tôi vào câu trả lời của tôi, nhưng bạn thực sự đã giúp với đề xuất mô-đun này. –

+1

Vui vì nó đã giúp ^^ – Ketouem

Các vấn đề liên quan