Hướng dẫn how do i pass data from python flask to javascript? - làm cách nào để chuyển dữ liệu từ python flask sang javascript?

Bạn có thể sử dụng {{ variable }} bất cứ nơi nào trong mẫu của mình, không chỉ trong phần HTML. Vì vậy, điều này sẽ hoạt động:



  


  

Hello World

Hãy nghĩ về nó như là một quá trình hai giai đoạn: Đầu tiên, Jinja (bình cơ động mẫu sử dụng) tạo ra đầu ra văn bản của bạn. Điều này được gửi đến người dùng thực thi JavaScript mà anh ta nhìn thấy. Nếu bạn muốn biến bình của mình có sẵn trong JavaScript dưới dạng mảng, bạn phải tạo định nghĩa mảng trong đầu ra của mình:


  
    
  
  
    

Hello World

Jinja cũng cung cấp các cấu trúc nâng cao hơn từ Python, vì vậy bạn có thể rút ngắn nó thành:



  


  

Hello World

Bạn cũng có thể sử dụng các vòng lặp


  
    
  
  
    

Hello World

0, câu lệnh

  
    
  
  
    

Hello World

1 và nhiều hơn nữa, xem tài liệu Jinja2 để biết thêm.

Ngoài ra, hãy xem câu trả lời của Ford, người chỉ ra bộ lọc


  
    
  
  
    

Hello World

2, một bổ sung cho bộ bộ lọc tiêu chuẩn của Jinja2.

Chỉnh sửa tháng 11 năm 2018:


  
    
  
  
    

Hello World

2 hiện được bao gồm trong bộ bộ lọc tiêu chuẩn của Jinja2.

Làm cách nào để chuyển dữ liệu từ bình sang HTML?

from flask import Flask, render_template
app = Flask(__name__)

#Variables I want to send to JavaScript
arr = []

@app.route('/', methods=['GET', 'POST'])
def index():

    if request.method == 'POST':

        arr.append("hi")
        arr.append("hello")
        arr.append("yo")

    return render_template('index.html', data=arr)

if __name__ == '__main__':
    app.run()

request.form.get (Hồi fname trực tuyến) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là fname và lưu trữ trong biến First_name ..

var x = {{ data }} //something like this
alert(x)

request.form.get (trên mạng lname) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là lname và lưu trữ trong biến last_name ..

Bạn có thể sử dụng bình trong JavaScript không?

Hướng dẫn how do i pass data from python flask to javascript? - làm cách nào để chuyển dữ liệu từ python flask sang javascript?
bình giữ nhiệt

2020.12.03

この 記事 約 約 分 読め 読め ます。約9分で読めます。

Cách chuyển các biến từ Python sang JavaScript (tập lệnh nội tuyến / tập lệnh bên ngoài) Đây là một bài viết liên quan đến Flask hoặc Jinja2, nhưng cách xử lý các đối tượng được tạo ở phía máy chủ với Python (liệt kê dữ liệu lần này) ở phía JS tôi sẽ giải thích về.

Cần phải chuyển dữ liệu từ phía Python sang phía JS bằng mọi cách trong việc thực hiện ứng dụng tính toán và hiển thị chi phí cuộc họp được thực hiện với bình được thực hiện để chơi bất cứ lúc nào (đó là một JS thông thường Nhiệm vụ của người mới bắt đầu) Vì vậy, đây là một lời giải thích về cách thực hiện.

Tổng quan hình ảnh

Là một hình ảnh, việc xử lý như sau.

Hướng dẫn how do i pass data from python flask to javascript? - làm cách nào để chuyển dữ liệu từ python flask sang javascript?

Ngay cả khi bạn vượt qua các đối số với App.Route in Python, JS không thể xử lý nó trừ khi bạn gây rối với nó một chút, vì vậy bạn cần xác định lại nó bên trong thẻ script của Jinja (tệp mẫu / HTML) một lần. Có một cách để xử lý trực tiếp, nhưng tôi sẽ không giới thiệu nó lần này, vì vậy nếu bạn cần, vui lòng tạo nó trong khi nhìn vào tài liệu.

Tổng quan về cấu trúc / mã tệp thực tế

Cấu trúc tập tin

Cấu trúc tập tin như sau. Chỉ xem / mẫu mà không có mô hình.

-workspace
  |--static
         |---js
               |--sample.js
         |--stylesheet
               |--stylesheet.css
 |--templates
         |--base.html
         |--test_page.html
|--app.py

Tổng quan về mã

Giải thích 3 kịch bản sau: app.py/ test_page.html/ sample.js

~app.py~

rom flask import Flask
from flask import render_template, url_for
from flask import request

app = Flask(__name__)

input_from_python = ["a","b","c"]  # transfer data

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

@app.route('/testpage')
def test_page_view():
    return render_template("test_page.html", input_from_python= input_from_python)  #here!! transfer

if __name__ == '__main__':
    app.run(debug=True)

Trong app.py, khi / testpage được gọi, nó được hiển thị và một đối tượng được gọi là input_from_python được truyền.

~test_page.html~

{% block head %}
    
{% endblock %}


{% block content %}
    
    

    

{{ input_from_python | tojson }}

from_html_file

from_html_original

from_js_file

from_js_original

{% endblock %}

【Điểm quan trọng】

Trong, như Let Let List_data = {{input_from_python | Tojson}} Xác định lại đối tượng nhận được từ Python trong biến list_data. Bằng cách này, nó trở thành một biến có thể được xử lý ở phía JS.redefining the object received from python in the list_data variable. By doing this, it becomes a variable that can be handled on the js side.

Sau đó, khoảng 4 nút được cài đặt và thuộc tính onclick của mỗi nút gọi tập lệnh của mỗi hàm JS (cả script inline và sample.js).

~sample.js~

function add_reversed_data_from_js() {
    let list_data2= list_data.push("test_input_from_js");

    document.getElementById("output_from_js").innerHTML = "from_js:" + list_data2;
}

function add_data_from_js(){
    document.getElementById("output_from_js2").innerHTML = "from_js_original:" +list_data;

}

Kết quả thực thi

Dán kết quả thực thi với ảnh chụp màn hình.

Bấm vào trước khi nhấp vào:

Hướng dẫn how do i pass data from python flask to javascript? - làm cách nào để chuyển dữ liệu từ python flask sang javascript?

Sau khi nhấp vào nút:

Hướng dẫn how do i pass data from python flask to javascript? - làm cách nào để chuyển dữ liệu từ python flask sang javascript?

Bạn có thể thấy rằng kết quả thực thi của JS được xử lý bởi JS (tập lệnh nội tuyến / tập lệnh bên ngoài) được trả lại cho mỗi phần thẻ p. Tôi đã có thể hiển thị một cách an toàn kết quả thực thi trong HTML thông qua xử lý JS.

BẢN TÓM TẮT

Tôi không nghĩ rằng nó đặc biệt khó khăn, nhưng tôi đã giới thiệu cách chuyển các biến cho JS qua Jinja.

Tôi đang thực hiện một công cụ tính toán chi phí cuộc họp bằng cách sử dụng bình theo yêu cầu khác và việc triển khai dự kiến ​​sẽ sớm được hoàn thành, vì vậy tôi muốn đưa ra công cụ đơn giản hóa ngay khi hoàn thành. (Thành thật mà nói, JS là một công cụ mà tôi nghĩ là dễ dàng hơn.)

タイトル と url を し まし た た た

Làm cách nào để chuyển giá trị của biến bình cho biến JavaScript?

Từ bình Nhập bình, Render_Template ..
Ứng dụng = bình (__ name__).
@app.route('//').
@ứng dụng.tuyến đường ('/', phương thức = ['get', 'post']).
def upload_file ():.
Nếu yêu cầu.Phương thức == 'Bài đăng':.
app.run(debug=True).

Chỉ số def (Tên):.

request.form.get (Hồi fname trực tuyến) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là fname và lưu trữ trong biến First_name ..
request.form.get (trên mạng lname) sẽ nhận đầu vào từ giá trị đầu vào có thuộc tính tên là lname và lưu trữ trong biến last_name ..

Bạn có thể sử dụng bình trong JavaScript không?

Bạn sẽ cần HTML để tạo một trang web dựa trên bình.Bạn không cần phải hoàn toàn cần CSS hoặc JavaScript, nhưng rất có thể bạn sẽ muốn sử dụng cái trước và, tùy thuộc vào những gì bạn cần trang web của mình để làm, bạn cũng có thể sử dụng cái sau.Bạn có thể chứa các tệp CSS và JS dưới dạng các tệp 'tĩnh' trong bản dựng bình của bạn.You don't strictly need CSS or JavaScript, but you'll very, very likely want to use the former and, depending what you need your site to do, you'll likely use the latter, too. You can accommodate CSS and JS files as 'static' files in your Flask build.

Làm thế nào để bạn gọi một hàm javascript từ một bình?

Làm thế nào để bạn gọi một javascript trong bình ?..
Từ bình Nhập bình, Render_Template ..
Ứng dụng = bình (__ name__).
@ứng dụng.tuyến đường ('/', phương thức = ['get', 'post']).
def upload_file ():.
Nếu yêu cầu.Phương thức == 'Bài đăng':.