Chuyển biến từ html sang bình python

Trong hướng dẫn này, chúng ta sẽ xem cách chuyển biến JavaScript sang biến Python trong Flask

Trong JavaScript, các biến lưu trữ dữ liệu có thể được sử dụng hoặc chỉnh sửa sau này. Thường được lấy làm đầu vào, các giá trị này thường được sử dụng ở phía máy chủ. Sử dụng Python Flask framework và AJAX, chúng ta có thể chuyển các giá trị JavaScript này sang hàm Python

Truyền biến JavaScript cho biến Python trong Flask

Chúng tôi sẽ đề cập đến hai thành phần cần thiết để thực hiện thao tác này

1. Trước tiên, chúng tôi sẽ tạo trang HTML của mình, với khu vực nhập liệu cơ bản và chức năng JavaScript để chuyển giá trị theo

Chúng tôi có một hàm title() đang gọi hàm JavaScript senduserinfo() của chúng tôi. Bây giờ, có một vài điều khoản để hiểu ở đây

  • getElementByID là một phương thức trả về các giá trị có id khớp với chuỗi được cung cấp trong phương thức. Và mặc dù chúng tôi không chuyển bất kỳ giá trị nào cho hàm JavaScript, nhưng nó sẽ nhận được giá trị
  • XMLHttpResponse(phương thức/URL) là một đối tượng AJAX. Nó được sử dụng trong việc gửi dữ liệu đến máy chủ web. Tạo một đối tượng XMLHttpResponse và chuyển giá trị của bạn qua nó
  • JSON. stringify là một phương thức JSON phổ biến. Khi truyền dữ liệu đến máy chủ web, dữ liệu phải ở dạng chuỗi và. phương thức stringify giúp chúng ta làm điều đó

 

2. Bây giờ, chúng ta đến với mã bình. Dữ liệu đã được truyền vào hàm python và bây giờ chúng ta phải nhận nó. Hãy nhớ rằng, chúng tôi đã gửi dữ liệu ở định dạng chuỗi JSON và bây giờ chúng tôi phải mở nó. json. tải, nó nhận chuỗi JSON và chuyển đổi nó thành từ điển Python

Và, đây là cách bạn có thể chuyển một biến JavaScript được chuyển đến một hàm Python bằng Flask

Bạn cũng có thể tham khảo các hướng dẫn khác của tôi –

  • Ma trận nhầm lẫn sử dụng scikit-learning trong Python

2 phản hồi cho "Làm cách nào để chuyển các biến JavaScript sang Python trong Flask?"

  1. V nói.

    Anh bạn này đã cứu mạng tôi hôm nay, cảm ơn rất nhiều

  2. eduardo nói.

    và nếu có nhiều hơn một biến mà tôi phải gửi cho python thì tôi sẽ làm như thế nào, tôi đã thử nhiều cách rồi mà không được

    Rất phổ biến, chúng tôi muốn gửi dữ liệu từ máy chủ của mình trở lại máy khách. Trước đây, các máy chủ thường chỉ chứa một tập hợp các tệp; . Bởi vì các tệp này là tĩnh và không thay đổi bởi máy chủ, các trang web như vậy thường được gọi là trang web tĩnh

    Trong quá trình phát triển web hiện đại hơn, thay vì gửi dữ liệu tĩnh mọi lúc, chúng tôi thường muốn gửi dữ liệu động, dữ liệu này có thể phụ thuộc vào việc người dùng nào đã đăng nhập, tài khoản của người dùng đã hết hạn hay chưa, v.v. Để làm điều này, chúng tôi sẽ sử dụng công cụ tạo khuôn mẫu được tích hợp trong Flask, được gọi là Jinja2

    Jinja2

    Vì Jinja2 đi kèm với Flask nên chúng tôi không cần phải Document {% block content %} {% endblock %} 9 bất cứ điều gì và chúng tôi có thể bắt đầu ngay lập tức. Để đánh giá dữ liệu từ máy chủ của chúng tôi trong các mẫu của chúng tôi, chúng tôi sử dụng ký hiệu Document {% block content %} {% endblock %} 0 và để in dữ liệu, chúng tôi sử dụng Document {% block content %} {% endblock %} 1. (Không rõ về sự khác biệt giữa đánh giá và in dữ liệu trong một mẫu? Đừng lo lắng, chúng ta sẽ sớm thấy một ví dụ rõ ràng. )

    Hãy bắt đầu bằng việc Flask render HTML đầu tiên. Để làm như vậy, chúng tôi phải bao gồm Document {% block content %} {% endblock %} 2 khi nhập từ Document {% block content %} {% endblock %} 0. Hãy tạo một Document {% block content %} {% endblock %} 1 và bao gồm những điều sau đây

    Vì vậy, những gì đang xảy ra ở trên? . Các biến này được gọi là Document {% block content %} {% endblock %} 3 và Document {% block content %} {% endblock %} 4 và giá trị của chúng là biến Document {% block content %} {% endblock %} 5 ( Document {% block content %} {% endblock %} 6) và biến Document {% block content %} {% endblock %} 7 (_______08). Thông thường, các khóa và giá trị này sẽ được đặt tên giống nhau, nhưng chúng tôi đang sử dụng các tên khác nhau để thể hiện sự khác biệt trong ví dụ này

    Bây giờ để đảm bảo rằng Flask có thể tìm thấy các mẫu của chúng ta, chúng ta cần tạo một thư mục có tên là Document {% block content %} {% endblock %} 9 và bên trong hãy tạo tệp Document {% block content %} {% endblock %} 2 của chúng ta

    Logic trong các mẫu

    Bây giờ, hãy thêm phần sau vào tệp Document {% block content %} {% endblock %} 2 của chúng tôi

    Document {% block content %} {% endblock %} 2

    Chúng ta có thể lặp lại các danh sách bằng cách sử dụng Document {% block content %} {% endblock %} 32 với Jinja và sử dụng logic có điều kiện với các câu lệnh Document {% block content %} {% endblock %} 33. Điều này có nghĩa là chúng tôi có thể hiển thị cùng một trang HTML và tạo các chế độ xem khác nhau cho những người dùng khác nhau. Các trang của chúng tôi giờ đây năng động hơn nhiều. Hãy suy nghĩ về một số ứng dụng cho một cái gì đó như thế này. tạo khuôn mẫu cho phép bạn liệt kê tất cả bạn bè của mình trên mạng xã hội, chỉ hiển thị thông tin nếu bạn là quản trị viên, hiển thị nút đăng xuất nếu bạn đã đăng nhập và hơn thế nữa, tất cả chỉ với một số lượng nhỏ các mẫu tồn tại trên máy chủ

    Cũng lưu ý rằng chỉ mã Python bên trong Document {% block content %} {% endblock %} 1 được in ra trang. Bạn sẽ thường thấy các vòng lặp Document {% block content %} {% endblock %} 32 và câu lệnh Document {% block content %} {% endblock %} 33 được xác định bên trong Document {% block content %} {% endblock %} 0, vì chúng ta muốn đánh giá mã đó, nhưng chỉ khi chúng ta ở bên trong các khối Document {% block content %} {% endblock %} 33 hoặc Document {% block content %} {% endblock %} 32 thì chúng ta mới muốn hiển thị nội dung nào đó trên trang (sử dụng Document {% block content %} {% endblock %} 1)

    Kế thừa mẫu

    Một trong những tính năng mạnh mẽ hơn của Jinja là khả năng sử dụng kế thừa mẫu, có nghĩa là một mẫu có thể kế thừa từ mẫu khác. Hãy xem một ví dụ. Trước tiên, hãy tạo một tệp có tên Document {% block content %} {% endblock %} 91

    Document {% block content %} {% endblock %}

    Trong một mẫu khác (trong cùng thư mục), hãy tạo một tệp có tên Document {% block content %} {% endblock %} 92

    Document {% block content %} {% endblock %} 3

    Chúng tôi có thể kế thừa từ các mẫu khác bằng cách sử dụng từ khóa Document {% block content %} {% endblock %} 93. Điều này làm giảm đáng kể sự trùng lặp mã của chúng tôi, đặc biệt đối với những thứ như đầu trang và chân trang. Để xem hoạt động kế thừa này, hãy thêm một tuyến đường khác vào Document {% block content %} {% endblock %} 1 của bạn

    Document {% block content %} {% endblock %} 9

    Trình trợ giúp URL

    Một trình trợ giúp tuyệt vời khác mà Jinja có là trình trợ giúp Document {% block content %} {% endblock %} 95 giúp loại bỏ nhu cầu mã hóa cứng một URL. Điều này rất hữu ích khi bạn có URL được tạo động hoặc không phải lúc nào cũng biết đường dẫn chính xác. Hãy tưởng tượng chúng ta đang làm việc trong tệp Document {% block content %} {% endblock %} 2 của mình và chúng ta muốn có một thẻ neo để liên kết đến tuyến đường Document {% block content %} {% endblock %} 97. Chúng tôi cũng biết rằng trong Document {% block content %} {% endblock %} 1 của chúng tôi, chức năng được sử dụng để gửi phản hồi đến máy chủ của chúng tôi được gọi là Document {% block content %} {% endblock %} 99. Đây là những gì chúng ta có thể đặt làm giá trị cho Document {% block content %} {% endblock %} 10 của mình

    Document {% block content %} {% endblock %} 1

    Lấy dữ liệu từ chuỗi truy vấn

    Khi người dùng gửi biểu mẫu qua yêu cầu GET, dữ liệu biểu mẫu đó có thể được lấy từ chuỗi truy vấn. Flask làm cho quá trình này dễ dàng hơn một chút với phương thức có tên là Document {% block content %} {% endblock %} 11. Hãy xem nó hoạt động. Để bắt đầu, hãy bắt đầu với một biểu mẫu đơn giản trong trang có tên là Document {% block content %} {% endblock %} 12

    Document {% block content %} {% endblock %} 5

    Để nắm bắt dữ liệu này, chúng tôi có thể sử dụng Document {% block content %} {% endblock %} 11 mà chúng tôi cần nhập từ Document {% block content %} {% endblock %} 0 và truy cập thuộc tính Document {% block content %} {% endblock %} 15 bên trong yêu cầu

    Làm cách nào để chuyển giá trị từ HTML sang bình Python?

    từ bình nhập Flask, render_template, yêu cầu
    @ứng dụng. tuyến đường('/')
    sinh viên chắc chắn()
    trả về render_template('sinh viên. html')
    @ứng dụng. route('/result',methods = ['POST', 'GET'])
    kết quả chắc chắn()
    nếu yêu cầu. phương pháp == 'POST'
    trả về render_template("kết quả. html",kết quả = kết quả)

    Làm cách nào để chuyển giá trị từ HTML sang Python?

    Bạn có thể truyền thông tin đơn giản bằng cách ghép các cặp khóa và giá trị cùng với bất kỳ URL nào hoặc bạn có thể sử dụng các thẻ HTML

    Làm cách nào để sử dụng biến từ bình trong HTML?

    Cách truyền biến từ biểu mẫu Html Python Flask bằng mã ví dụ .
    từ yêu cầu nhập bình
    @ứng dụng. route('/py', methods=['GET', 'POST'])
    máy chủ chắc chắn()
    nếu yêu cầu. phương pháp == 'POST'
    # Sau đó lấy dữ liệu từ biểu mẫu
    thẻ = yêu cầu. biểu mẫu ['thẻ']

    Làm cách nào để chuyển biến từ JavaScript sang bình?

    Bạn có thể gửi yêu cầu đến máy chủ Flask của mình và sau đó trong bình bạn có thể truy cập các giá trị đó theo cách sau với yêu cầu. .
    từ bình nhập Flask, yêu cầu, url_for
    @ứng dụng. route("/data", methods=["GET", "POST"])
    chắc chắn get_data()
    nếu yêu cầu. phương pháp == "POST"
    tên người dùng = yêu cầu. biểu mẫu ["tên người dùng"]

Chủ đề