Hướng dẫn how do you call a python function on a button click in flask? - làm thế nào để bạn gọi một hàm python trên một nút bấm trong bình?

Có vẻ như bạn muốn sử dụng ứng dụng web này như một điều khiển từ xa cho robot của mình và vấn đề cốt lõi là bạn sẽ không muốn tải lại trang mỗi khi bạn thực hiện một hành động, trong trường hợp đó, liên kết cuối cùng bạn đã đăng câu trả lời của bạn vấn đề.

Tôi nghĩ rằng bạn có thể hiểu lầm một vài điều về bình. Đối với một, bạn không thể làm tổ nhiều chức năng trong một tuyến đường. Bạn sẽ không tạo ra một tập hợp các chức năng có sẵn cho một tuyến đường cụ thể, bạn đang xác định một điều cụ thể mà máy chủ sẽ làm khi tuyến đường đó được gọi.

Với ý nghĩ đó, bạn sẽ có thể giải quyết vấn đề của mình bằng một trang tải lại bằng cách thay đổi ứng dụng của bạn để trông giống như thế này hơn:

from flask import Flask, render_template, Response, request, redirect, url_for
app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html')

@app.route("/forward/", methods=['POST'])
def move_forward():
    #Moving forward code
    forward_message = "Moving Forward..."
    return render_template('index.html', forward_message=forward_message);

Sau đó, trong HTML của bạn, sử dụng điều này:

... Để thực hiện mã chuyển tiếp chuyển tiếp của bạn. Và bao gồm điều này:

{{ forward_message }} 

... Nơi bạn muốn thông báo chuyển tiếp chuyển tiếp xuất hiện trên mẫu của bạn.

Điều này sẽ khiến trang của bạn tải lại, điều này không thể tránh khỏi mà không cần sử dụng Ajax và JavaScript.

Tôi chưa quen với Python và Flask. Tôi có một ứng dụng web Flask có nút. Khi tôi nhấp vào nút, tôi muốn thực hiện phương thức Python không phải là phương thức JavaScript. Tôi có thể làm cái này như thế nào?

Tôi đã thấy các ví dụ với Python nơi nó chuyển hướng tôi đến một trang mới bằng cách sử dụng thẻ biểu mẫu như thế này

Nhưng tôi không muốn nó chuyển hướng tôi đến một trang mới. Tôi chỉ muốn nó thực thi phương thức Python. Tôi đang làm điều này cho một chiếc xe robot pi mâm xôi. Khi tôi nhấn nút chuyển tiếp, tôi muốn nó chạy phương thức để xoay bánh xe về phía trước.I am making this for a Raspberry Pi robot car. When I press the forward button, I want it to run the method to Turn wheels forward.

Mã HTML mã (index.html)index.html)


Mã app.py đơn giản - phương thức di chuyển_forward () nằm ở đây

#### App.py code

from flask import Flask, render_template, Response, request, redirect, url_for
app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html');

def move_forward():
    #Moving forward code
    print("Moving Forward...")

Tôi đã thấy những câu hỏi tương tự của tôi trên Stackoverflow, nhưng dường như họ không trả lời câu hỏi của tôi hoặc tôi không thể hiểu câu trả lời. Nếu ai đó có thể vui lòng cung cấp cho tôi một cách đơn giản để gọi một phương thức Python trên sự kiện nhấp vào nút, nó sẽ được đánh giá rất cao.

Những câu hỏi khác mà tôi đã xem xét:

-Chức năng gọi bình của bình bằng bình bằng các nút

-gọi chức năng Python bằng một nút

-nút-Flask Chạy Python mà không cần trang làm mới?

Câu hỏi này được gắn thẻ với


    

1
2
3
4
5
1
2
3
4
5

~ Được hỏi vào năm 2017-03-04 21:12:56

Bạn có thể chỉ cần làm điều này với sự trợ giúp của Ajax ... Đây là một ví dụ gọi chức năng Python in Hello mà không chuyển hướng hoặc làm mới trang.

Trong app.py đặt đoạn mã bên dưới.

#rendering the HTML page which has the button
@app.route('/json')
def json():
    return render_template('json.html')

#background process happening without any refreshing
@app.route('/background_process_test')
def background_process_test():
    print ("Hello")
    return ("nothing")

Và trang json.html của bạn sẽ trông giống như bên dưới.





//button

Test

Tại đây khi bạn nhấn nút Kiểm tra đơn giản trong bảng điều khiển, bạn có thể thấy "Xin chào" đang hiển thị mà không cần làm mới.

~ Đã trả lời vào năm 2018-03-17 10:34:22

Có vẻ như bạn muốn sử dụng ứng dụng web này như một điều khiển từ xa cho robot của mình và vấn đề cốt lõi là bạn sẽ không muốn tải lại trang mỗi khi bạn thực hiện một hành động, trong trường hợp đó, liên kết cuối cùng bạn đã đăng câu trả lời của bạn vấn đề.

Tôi nghĩ rằng bạn có thể hiểu lầm một vài điều về bình. Đối với một, bạn không thể làm tổ nhiều chức năng trong một tuyến đường. Bạn sẽ không tạo ra một tập hợp các chức năng có sẵn cho một tuyến đường cụ thể, bạn đang xác định một điều cụ thể mà máy chủ sẽ làm khi tuyến đường đó được gọi.

Với ý nghĩ đó, bạn sẽ có thể giải quyết vấn đề của mình bằng một trang tải lại bằng cách thay đổi ứng dụng của bạn để trông giống như thế này hơn:

from flask import Flask, render_template, Response, request, redirect, url_for
app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html')

@app.route("/forward/", methods=['POST'])
def move_forward():
    #Moving forward code
    forward_message = "Moving Forward..."
    return render_template('index.html', forward_message=forward_message);

Sau đó, trong HTML của bạn, sử dụng điều này:

... Để thực hiện mã chuyển tiếp chuyển tiếp của bạn. Và bao gồm điều này:

{{ forward_message }} 

... Nơi bạn muốn thông báo chuyển tiếp chuyển tiếp xuất hiện trên mẫu của bạn.

Điều này sẽ khiến trang của bạn tải lại, điều này không thể tránh khỏi mà không cần sử dụng Ajax và JavaScript.

~ Đã trả lời vào năm 2017-03-17 14:17:12