Hướng dẫn run python script on button click flask - chạy tập lệnh python trên nút nhấp vào bình

Tôi hiện đang cố gắng tạo một trang web có bình chứa một nút [bây giờ]. Nếu tôi nhấn nút đó, tôi muốn chạy tập lệnh Python từ một đường dẫn cụ thể hoặc chỉ thư mục dự án. Tôi đã thấy một số bài viết về cùng một chủ đề nhưng không ai trong số họ thực sự có thể giúp tôi.

Tôi đã có một số mã. Đây là ứng dụng bình của tôi

from flask import Flask, render_template, jsonify
import test

app = Flask[__name__]

@app.route['/']
def index[]:
    return render_template['index.html']


if __name__ == '__main__':
app.run[debug=True]

Và đó là chỉ mục của tôi.html



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

Nếu tôi chạy trang web bình của mình và nhấp vào nút, tôi muốn thực hiện bài kiểm tra của mình được lưu trong thư mục dự án của tôi hoặc ở một nơi khác. Tôi không biết nếu có thể theo cách đó hoặc nếu có một giải pháp tốt hơn. Ngay bây giờ tôi vẫn đang thử với bình nhưng tôi không thể chạy thử. Khi tôi nhấn nút, nó chỉ cho tôi thấy cảnh báo với [đối tượng đối tượng]

Về cơ bản, những gì tôi đang cố gắng xây dựng là một trang web có nút, giống như một dịch vụ chạy các tập lệnh của tôi trong nền đôi khi có thể mất nhiều thời gian hơn để hoàn thành. Tôi không chắc liệu tôi có hiểu lầm về việc sử dụng Ajax trong trường hợp này không. Mọi sự giúp đỡ đều là tốt.

Tạo một tài khoản để theo dõi các cộng đồng yêu thích của bạn và bắt đầu tham gia vào các cuộc trò chuyện.

Tham gia Reddit

r/flask

Hi,

Tôi hiện có một danh sách các thẻ div mà lặp đi lặp lại được tạo dựa trên một từ điển tôi có

Nó trông giống như thế này:

{ % cho mỗi cái trong ba %}



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

0



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

1



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

2



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

3

Cách tốt nhất để đi về điều này và làm cho nó chạy một chức năng Python def cụ thể với mỗi cái được truyền vào? Tôi đã nhìn nhiều nơi trên mạng nhưng không thể tìm thấy bất cứ điều gì cụ thể cho điều này một cách đáng ngạc nhiên

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]

Forward

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



 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

4


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

5


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

6


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

7


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

8


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

4


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

5


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

6


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

7


 
 
 
   

   

   
       function goPython[]{
           $.ajax[{
             type: 'POST',
             url: "/test.py",
             //or some other path like /scripts/test.py
             dataType: "text",
             success: function [data] {
               alert[data]
             },
             error: function [data] {
               alert[data]
             }
           }];
       }
   
 

8

~ Đượ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.



        $[function[] {
          $['a#test'].on['click', function[e] {
            e.preventDefault[]
            $.getJSON['/background_process_test',
                function[data] {
              //do nothing
            }];
            return false;
          }];
        }];



//button

Test

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:


    Forward

... Để 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

Làm cách nào để chạy tập lệnh Python trên nút Nhấp vào bình?

Làm cách nào để chạy tệp bình Python khi nhấp vào nút HTML? Tạo tùy chọn nút bằng cách sử dụng thẻ sau đó sử dụng hàm title [] sẽ chạy tệp bình Python khi bạn nhấp vào chuột trên nút. Tuy nhiên, trước khi quy trình trên, bạn nên tạo một tệp bình Python với sự trợ giúp của các thẻ lệnh HTML.Create a button option using tag then use the function title[] which will run the python flask file when you click by the mouse on the button. However before above process you should create a python flask file with the help of html command tags.

Làm cách nào để chạy tập lệnh Python bằng cách nhấp vào?

Nhấp chuột phải vào tập tin, chọn Mở với. Nếu bạn muốn chỉ cần chạy tập lệnh, hãy tìm Python.exe và chọn nó. Nếu bạn muốn gỡ lỗi với Idle, hãy tìm thực thi đó và chọn nó. Lưu câu trả lời này.. If you want to simply run the script, find python.exe and select it. If you want to debug with IDLE, find that executable and select it. Save this answer.

Làm thế nào tôi có thể chạy một kịch bản python từ bên trong bình?

2 câu trả lời..
Bọc những gì tập lệnh Python [ví dụ: trang web_generator.py] đang tạo thành một hàm ..
Đặt nó vào cùng thư mục với app.py hoặc flask.py của bạn ..
Sử dụng từ trang web_generator nhập chức năng_name trong flask.py ..
Chạy nó bằng function_name [].

Làm cách nào để kích hoạt tập lệnh python tự động?

Bấm đúp vào Trình lập lịch tác vụ, sau đó chọn tùy chọn để 'Tạo nhiệm vụ cơ bản' Nhập tên cho tác vụ của bạn [bạn cũng có thể nhập mô tả nếu cần], sau đó nhấn tiếp theo.Chẳng hạn, hãy đặt tên cho nhiệm vụ là: Chạy Hello World.Chọn để bắt đầu nhiệm vụ 'hàng ngày' vì chúng tôi muốn chạy kịch bản Python hàng ngày lúc 6 giờ sáng.…' Type a name for your task [you can also type a description if needed], and then press Next. For instance, let's name the task as: Run Hello World. Choose to start the task 'Daily' since we wish to run the Python script daily at 6am.

Bài Viết Liên Quan

Chủ Đề