Gói python để tạo HTML từ một mẫu được xác định thông qua cây các phần tử kết xuất Show Tại sao
Bắt đầucài đặt
Một ví dụ đơn giản import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {})) Điều này sẽ in tài liệu HTML sau It works! Lưu ý rằng việc triển khai được cung cấp của thẻ HTML và thẻ HEAD đi kèm với các giá trị mặc định hợp lý cho các thẻ DOCTYPE và META phần tử HTMLGói import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))9 xác định tất cả các thẻ HTML tiêu chuẩn với tên lớp viết hoa, e. g. CƠ THỂ, DIV, PHẦN, v.v. Phương thức init của phần tử HTML sẽ coi tất cả các đối số được truyền là phần tử con và đối số từ khóa là thuộc tính trên phần tử HTML. Dấu gạch dưới hàng đầu của tên thuộc tính sẽ bị xóa (để cho phép chỉ định lớp và thuộc tính) và dấu gạch dưới sẽ được thay thế bằng dấu gạch ngang vì python không cho phép định danh có dấu gạch ngang và thuộc tính HTML thường không sử dụng dấu gạch dưới Thí dụ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) ) đầu ra
kết xuấtPhương pháp It works!0 nên được sử dụng để hiển thị cây phần tử. Tất cả các nút trong cây nên kế thừa từ It works!1. Lá trên cây có thể là vật trăn tùy ý. Hàm kết xuất mong muốn phần tử gốc của cây và từ điển ngữ cảnh làm đối số. Đầu ra được tạo bằng cách hiển thị cây đệ quy. Nếu một đối tượng trong cây là một thể hiện của It works!2 thì phương thức kết xuất của nó sẽ được gọi với ngữ cảnh là một đối số duy nhất và nó phải trả về một trình tạo tạo ra các đối tượng thuộc loại It works!3. Nếu không, đối tượng sẽ được chuyển đổi thành chuỗi và thoát để sử dụng trong HTML. Để ngăn một chuỗi bị thoát, có thể sử dụng It works!4 hoặc It works!5 từ gói django Ví dụ đối tượng python import datetime from htmlgenerator import render, DIV print(render(DIV("Hello, here is some date: ", datetime.date.today()), {})) print( render( DIV( "Hello, here is some data: ", {"fingers": [1, 2, 3, 4, 5], "stuff": {"set": {1, 2, 3, 3, 3, 3, 3}}}, ), {}, ) ) đầu ra
Ví dụ kết xuất đối tượng from htmlgenerator import render, DIV class DoStuff: # be aware that all yielded strings will not be seperated by spaces but concatenated directly def render(self, context): yield "eat " yield "sleep " yield "program" print(render(DIV("I like to ", DoStuff()), {})) đầu ra
thoát ví dụ from htmlgenerator import mark_safe, render, DIV print( render( DIV( "Hello, here is some HTML: ", ' đầu ra import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))0 Giá trị lười biếngĐể cho phép các giá trị kết xuất chưa được biết tại thời điểm xây dựng mà chỉ có thể sử dụng các giá trị lười biếng tại thời điểm kết xuất. Theo mặc định, trình tạo html đi kèm với các giá trị lười biếng sau
Một giá trị lười biếng sẽ được giải quyết ngay trước khi nó được hiển thị. Việc triển khai tùy chỉnh các giá trị lười biếng có thể được thêm vào bằng cách kế thừa từ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )0 Thí dụ import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))1 đầu ra import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))2 Yếu tố ảoĐể cho phép xây dựng một trang động, các yếu tố ảo cần được sử dụng. Các yếu tố ảo sau đây tồn tại
Thí dụ import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))3 đầu ra import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))4 Chuyển đổi nguồn HTML hiện cóhtmlgenerator đi kèm với một công cụ dòng lệnh tiện dụng để chuyển đổi mã HTML hiện có thành các đối tượng python htmlgenerator. Để có được tất cả các phụ thuộc cho công cụ, hãy cài đặt nó với from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )7 Nó có thể được sử dụng với đầu vào tiêu chuẩn hoặc với một danh sách các tệp làm đối số import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))5 Theo mặc định, các tệp python được tạo có định dạng màu đen. Mã Python đã được tạo từ các tệp rất lớn, e. g. trang web hoàn chỉnh, có thể mất nhiều phút để được định dạng. Để có được mã python chưa được định dạng nhưng vẫn hợp lệ, hãy thêm cờ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )8. Điều này sẽ không chạy màu đen trên mã python được tạo và do đó rất nhanh. Để tạo mã nhỏ gọn hơn, cờ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )9 có thể được chuyển đến 0. Điều này sẽ tạo mã python nhỏ gọn nhất và hoạt động có và không có from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )8. Để có được mã có thể đọc được của con người, nên sử dụng cờ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )9. Để lấy mã nhanh (đặc biệt đối với các trang lớn), nên sử dụng cờ from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )8. Để có được một lớp lót, hãy sử dụng from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )9 và from htmlgenerator import render, DIV, OL, LI print( render( DIV( "My list is:", OL( LI("not very long"), LI("having a good time"), LI("rendered with htmlgenerator"), LI("ending with this item"), ), ), {}, ) ) print( render( DIV( "Hello world!", _class="success-message", style="font-size: 2rem", data_status="ok", ), {}, ) )8 Lưu ý về mã hóa tệp đầu vào Trong trường hợp mã hóa của tệp nguồn HTML đầu vào khác với mã hóa mặc định của hệ điều hành, sẽ có cờ 6 cho phép thực thi mã hóa đã cho khi đọc tệp. Đây có thể là trường hợp trên các hệ thống Windows. Do đó, nên sử dụng 7 khi sử dụng 0 trên windows tích hợp DjangoĐể sử dụng trình kết xuất cây phần tử trong các mẫu django html, cần phải thêm thẻ mẫu gọi hàm kết xuất import htmlgenerator as hg my_page = hg.HTML(hg.HEAD(), hg.BODY(hg.H1("It works!"))) print(hg.render(my_page, {}))6 Phương thức kết xuất của bất kỳ đối tượng nào cũng có thể được chuyển trực tiếp tới đối tượng HttpResponse. Điều này hữu ích nếu htmlgenerator sẽ tạo trang hoàn chỉnh trong chế độ xem dựa trên chức năng Chúng ta có thể tạo trang HTML bằng Python không?Nếu bạn quan tâm đến việc phát triển web bằng Python thì việc biết HTML và CSS sẽ giúp bạn hiểu rõ hơn về các khung web như Django và Flask. Nhưng ngay cả khi bạn mới bắt đầu với Python, HTML và CSS có thể cho phép bạn tạo các trang web nhỏ để gây ấn tượng với bạn bè .
Thư viện Python nào tạo HTML?Yattag là thư viện Python để tạo HTML hoặc XML theo cách Pythonic. Với Yattag, bạn không phải lo lắng về việc đóng các thẻ HTML. các mẫu HTML của bạn là mã Python. |