Tôi khá mới đối với Python/Flask và đặc biệt là các ngôn ngữ kịch bản, vì vậy, hãy làm việc với tôi.Chức năng gọi hàm bình thường bằng cách sử dụng các nút
Sau khi nhấn nút trong mẫu bình tôi muốn gọi hàm python được định nghĩa trong app.py mà tôi đã sẵn sàng để gọi trong mẫu bằng cách nhập phần dưới đây vào nơi tôi xác định hàm :
Ví dụ hàm trong app.py:
@app.route('/foo')
def foo(x,y):
pass
app.jinja_env.globals.update(foo=foo)
mẫu:
<button type="button" onclick="myFunction(this)" name="enable" id="{{counter}}"> Enable </button>
trong nút của tôi, tôi có thuộc tính onclick chỉ để kiểm tra xem nút chính xác trong số nhiều được nhấn bằng cách sử dụng javascript như vậy:
{% block scripts %}
{{ super() }}
<script>
function myFunction(elem){
if(confirm('Are you sure you want to ' + elem.name) == true){
alert("its done.");
}
else {
return false;
}
}
</script>
{% endblock %}
Vấn đề tôi đang gặp phải là tôi cần chức năng mà tôi đang cung cấp trong mẫu tương ứng với nút chính xác. Ví dụ, nếu nút nói Enable, thì tôi cần gọi hàm enable đã được định nghĩa hoặc nếu không, nếu nút tương ứng với false, tôi muốn sử dụng chức năng disable.
Tôi cảm thấy mình đang đi đúng hướng nhưng không thể vượt qua phần này. Hãy làm chi tiết nhất có thể.
Cảm ơn bạn đã trả lời.Vì vậy, từ những gì bạn đang nói với tôi tôi chỉ cần sử dụng JavaScript cho tình hình cụ thể của tôi. Vấn đề lớn nhất mà tôi gặp phải là cố gắng gọi hàm python thực sự trong JS. bạn có thể chỉ cho tôi đúng hướng hay đưa ra một ví dụ? – Sean
Bạn không thể gọi hàm python trực tiếp từ JavaScript vì trong trường hợp này, JavaScript của bạn đang chạy trên trình duyệt trên máy khách và hàm Python của bạn tồn tại trên máy chủ. Cách duy nhất để làm cho giao tiếp đó xảy ra là gửi một yêu cầu HTTP đến máy chủ của bạn. Đó là câu trả lời của tôi. Nếu những gì bạn đang cố gắng làm là hoàn toàn trực quan, chẳng hạn như vô hiệu hóa hoặc ẩn một nút thì điều này có thể đạt được hoàn toàn bằng JavaScript. Đây có phải là những gì bạn đang có ý định không? – junnytony
Xem nút chỉnh sửa của tôi để thao tác với javascript, nếu đó là những gì bạn đang cố gắng làm – junnytony