2017-05-05 185 views
1

我有一個生成QR碼(保存爲.png)和網頁的python腳本。我正在嘗試使JavaScript按鈕觸發python腳本來生成圖像,並替換HTML頁面上的填充圖像。觸發python腳本的Javascript事件

過程:

用戶點擊按鈕 - > Python腳本運行 - >蟒返回QR碼與網頁

赫雷什樣品HTML:

<html> 
    <body> 
     <img id="qrcode_container" src="assets/filler_image.png" width="35%"> 
     <p></p> 
     <button onclick="document.getElementById('qrcode_container').src= 
      'assets/sampleQR.png'">Generate Code</button> 
    </body> 
</html> 

但這只是替換圖像與預製的一個。

這裏是Python代碼:

import pyqrcode, uuid, png 
uuid_raw = uuid.uuid4() 
uuid_string = str(uuid_raw) 
print(real_code) 
qrImage = pyqrcode.create(uuid_string) 
qrImage.png(uuid_string+'.png', scale=16) 

所以最好我想有網頁上的按鈕觸發腳本運行,然後更換填料形象與新QR碼的網頁,如以及返回UUID。我已經檢查過像Django和Flask這樣的框架,但它們看起來對於我只用於生成映像的網頁來說過分了。我應該使用PHP來觸發事件嗎?

+0

你真的沒有給出關於你的堆棧的更多信息。 Javascript是在Node.js中運行還是運行在服務器正在服務的靜態HTML頁面上的普通JavaScript? – BhargavPatel

回答

1

只需將您的圖像的新src指向您的python腳本。假設你的腳本返回一個圖像。

<html> 
<body> 
    <img id="qrcode_container" src="assets/filler_image.png" width="35%"> 
    <p></p> 
    <button onclick="document.getElementById('qrcode_container').src= 
     '***PATH TO PYTHON SCRIPT HERE***'">Generate Code</button> 
</body> 

+0

這隻會下載Python腳本。他希望執行python腳本並生成在圖像標記中呈現的新QR碼。 – BhargavPatel

+0

你是什麼意思「這只是下載Python腳本」?如果您的Web服務器設置正確,它將「執行」Python腳本並「下載」結果。我已經完成了數百次這個答案。如果服務器端腳本的結果是圖像,則可以直接在腳本上指定圖像標記。 – gforce301

1

可以有一個哈克的解決方案,你可以得到Python和JavaScript來溝通,但這裏的最佳解決方案,將在Python中實現一個終端和服務請求。

是的,使用Django或Flask會是一種矯枉過正,但使用類似Falcon就足夠了。以下是Falcon的一個示例程序就足夠了。

# sample.py 
import falcon 
import json 

class QRResource: 
    def on_post(self, req, resp, text): 
     # generate QR code at a destination 
     output = { 
      'path': 'path accessable by user', 
      'uuid': "UUID HERE" 
     } 

     resp.body = json.dumps(quote) 

api = falcon.API() 
api.add_route('/qr', QRResource())