Sau khi tìm kiếm trong vài giờ, cuối cùng tôi đã có những điều sau đây, và nó hoạt động tốt. Hy vọng điều này sẽ giúp người khác trong tương lai.
Mã HTML và JS: log.html:
<html> <head> <title>Flask Intro - login page</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="static/bootstrap.min.css" rel="stylesheet" media="screen"> <script type="text/javascript" src="//code.jquery.com/jquery 2.1.4.min.js"></script> </head> <body> <input id="submitbutton" type="submit" value="Test Send Data"> <!-----------------------------------> <script type="text/javascript"> function runPyScript(input){ var jqXHR = $.ajax({ type: "POST", url: "/login", async: false, data: { mydata: input } }); return jqXHR.responseText; } $('#submitbutton').click(function(){ datatosend = 'this is my matrix'; result = runPyScript(datatosend); console.log('Got back ' + result); }); </script>Mã Python: App.Py:
from flask import Flask, render_template, redirect, url_for,request from flask import make_response app = Flask(__name__) @app.route("/") def home(): return "hi" @app.route("/index") @app.route('/login', methods=['GET', 'POST']) def login(): message = None if request.method == 'POST': datafromjs = request.form['mydata'] result = "return this" resp = make_response('{"response": '+result+'}') resp.headers['Content-Type'] = "application/json" return resp return render_template('login.html', message='') if __name__ == "__main__": app.run(debug = True)Thời gian đọc ước tính: 3 phút3 minutes
Bạn đang phát triển một trang web và tìm cách thực hiện một số tập lệnh Python trực tiếp từ trang web?
Ở đây chúng tôi đưa bạn qua cách để đạt được điều này bằng bình Python, các kịch bản chúng tôi chứng minh như sau:
- JavaScript On Load Event - Thực thi tập lệnh Python
- JavaScript trên sự kiện nhấp chuột - Thực hiện tập lệnh Python
Trong cả hai kịch bản trên, bạn sẽ được trình bày với các hộp bật lên như bên dưới, nhưng mã Python có thể được thay đổi thành bất cứ điều gì bạn thích.
Mã bạn sẽ cần để chạy cái này được chia thành hai. (A) logic index.html và (b) logic app.py
Mã cho trang Index.html
Đây là trang mà người dùng được trình bày. Như bạn có thể thấy logic có hai phần JavaScript khi chạy, hãy chuyển sang mã Python và chạy một số logic mà nó muốn trang web chạy.
Trong trường hợp này, tập lệnh app.py python giữ các lệnh cần được thực thi.
Lưu ý sự kiện tải trang đi đến tuyến đường trong app.py, cụ thể là @ @app.route (‘/xông)
Trong khi sự kiện nhấp vào nút được trỏ trực tiếp vào tại@@app.route (‘/test,) - về cơ bản điều này sẽ không chạy cho đến khi JavaScript yêu cầu, trên nút Nhấp vào sự kiện.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Sample Home Page</title> </head> <body> <! -- Calls a function on the page load. -- > <element onload="myfunction_onload"> <button type="submit" title='myfunction_clickevent()'>Run my Python!</button> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <! -- This script runs the python script on the page load --> <script> function myfunction_onload(){ $.ajax({ url: "app.py", context: document.body }) } </script> <! -- This script runs the python script when the button is clicked --> <script> function myfunction_clickevent(){ $.ajax({ url:"/test", context: document.body});} </script> </body> </html> cách chạy Python trực tiếp từ JavaScriptMã cho tập lệnh python app.py
Ở đây chúng tôi đang liên kết với trang index.html và nhận các lệnh từ nó và thực hiện các yêu cầu đó.
Trong kịch bản này, các hộp tin nhắn được hiển thị bằng cách sử dụng gói Win32API.
Ứng dụng đang sử dụng gói Flask để chạy trang web.
Điều mạnh mẽ ở đây là bạn có thể bắt đầu tùy chỉnh logic này để làm những gì bạn thích, các ví dụ bao gồm:
(A) Trả lại đồ thị cho trang web.
(B) Xử lý dữ liệu nhận được và trả về số liệu thống kê trên dữ liệu.
(C) Xác nhận dữ liệu nhận được trong Python và trả về phản hồi. Một ví dụ ở đây có thể là người dùng đăng nhập vào cơ sở dữ liệu.
import win32api from flask import Flask, render_template app = Flask(__name__) #Using the below, the popup message appears on the page load of index.html #0x00001000 - This makes the popup appear over the browser window @app.route('/') def index(): win32api.MessageBox(0, 'You have just run a python script on the page load!', 'Running a Python Script via Javascript', 0x00001000) return render_template('index.html') #Using the below, the popup message appears when the button is clicked on the webpage. #0x00001000 - This makes the popup appear over the browser window @app.route('/test') def test(): win32api.MessageBox(0, 'You have just run a python script on the button press!', 'Running a Python Script via Javascript', 0x00001000) return render_template('index.html') if __name__ == "__main__": app.run(debug=True)