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]
}
}];
}
3Cá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