Cách chuyển dữ liệu từ bình sang html?
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 Jinja2Vì 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ẫuBâ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 hiện 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ẫuMộ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 URLMộ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ấnKhi 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 |