Web2py - Lượt xem

sử dụng khung web2py Models, ControllersViewstrong các ứng dụng của nó. Nó bao gồm một cú pháp Python được sửa đổi một chút trongViews để có mã dễ đọc hơn mà không có bất kỳ hạn chế nào được áp dụng đối với việc sử dụng Python thích hợp.

Mục đích chính của web2py Viewlà nhúng mã python vào tài liệu HTML. Tuy nhiên, nó phải đối mặt với một số vấn đề, như sau:

  • Thoát mã python được nhúng trong tài liệu HTML.
  • Sau thụt lề dựa trên Python, có thể ảnh hưởng đến các quy tắc HTML.

Để thoát khỏi sự cố, web2py sử dụng dấu phân cách {{..}} trong phần xem. Các dấu phân cách giúp thoát mã python được nhúng. Nó cũng giúp tuân theo các quy tắc thụt lề trong HTML.

Mã bao gồm trong {{..}}dấu phân cách bao gồm mã Python ngoài ý muốn. Vì Python thường sử dụng thụt đầu dòng để phân tách các khối mã, nên mã không mong muốn trong các dấu phân cách phải được duy trì theo cách thích hợp. Để khắc phục sự cố này, web2py sử dụng“pass” từ khóa.

Khối mã bắt đầu bằng một dòng kết thúc bằng dấu hai chấm và kết thúc bằng một dòng bắt đầu bằng pass.

Note - pass là một từ khóa Python, nó không phải là một từ khóa web2py.

Đoạn mã sau đây cho thấy việc triển khai từ khóa pass:

{{
   if num > 0:
      response.write('positive number')
   else:
      response.write('negative number')
      pass
}}

Người trợ giúp HTML

web2py bao gồm lớp trợ giúp có thể được sử dụng để xây dựng HTML theo chương trình. Nó tương ứng với các thẻ HTML, được gọi là "trình trợ giúp HTML".

Ví dụ -

[(A('Home', _href = URL('default', 'home')), False, None, []), ...]

Đây, A là người trợ giúp tương ứng với mỏ neo <a>thẻ của HTML. Nó xây dựng anchor HTML<a> gắn thẻ theo chương trình.

Trình trợ giúp HTML bao gồm hai loại, cụ thể là positionalnamed tranh luận.

  • Positional các đối số được hiểu là các đối tượng nằm giữa thẻ mở và thẻ đóng HTML.

  • Named các đối số bắt đầu bằng dấu gạch dưới được hiểu là thẻ HTML.

Trợ giúp cũng hữu ích trong việc tuần tự hóa các chuỗi, với _str_và các phương thức xml. Ví dụ -

>>> print str(DIV(“hello world”))

Đầu ra

<div> hello world </div>

Note - Trình trợ giúp HTML cung cấp đại diện phía máy chủ của Mô hình đối tượng tài liệu (DOM).

Người trợ giúp XML

XML được gọi là một đối tượng, nó đóng gói văn bản không được thoát ra ngoài. Văn bản có thể chứa hoặc không chứa XML hợp lệ.

Ví dụ: đối với mã được đề cập bên dưới, nó có thể chứa JavaScript.

>>> print XML('<script>alert("unsafe!")</script>')

Đầu ra

<script> alert(“unsafe!”)</script>

Người trợ giúp tích hợp

Có rất nhiều trình trợ giúp tích hợp được sử dụng trong web2py. Một số trình trợ giúp tích hợp trong HTML được liệt kê như bên dưới.

Tên Sử dụng Thí dụ
A Trình trợ giúp này được sử dụng để xây dựng liên kết. Nó tương ứng với thẻ liên kết
[
(A('Home', _href = URL('default', 'home')), False, None, []),
...]
B Trình trợ giúp này giúp làm cho nội dung của văn bản được in đậm.
B('<hello>', XML('<i>world</i>'), _class = 'test', _id = 0)
THÂN HÌNH Trình trợ giúp này làm cho phần nội dung của một trang. Nó cũng bao gồm một toán tử nhân để tăng số lần ngắt.
BR()
Nó thực hiện đánh dấu cú pháp cho mã Python, C, C ++ và web2py. Trình trợ giúp này cũng có khả năng liên kết tài liệu API.
CODE('print "hello"', language = 'python').xml()
FIELDSET Nó tạo một trường đầu vào cùng với nhãn của nó.
FIELDSET('Height:', INPUT(_name = 'height'), _class = 'test')
CÁI ĐẦU Nó giúp gắn thẻ thẻ <head> của một trang HTML.
HEAD(TITLE('<hello>'))
IMG Nó giúp nhúng hình ảnh cho trang HTML nhất định.
IMG(_src = 'http://example.com/image.png',_alt = 'test')

Người trợ giúp tùy chỉnh

Những trình trợ giúp này được sử dụng để tùy chỉnh các thẻ theo yêu cầu. web2py sử dụng các trình trợ giúp tùy chỉnh sau:

NHÃN

web2py sử dụng TAG làm trình tạo thẻ chung. Nó giúp tạo các thẻ XML tùy chỉnh. Cú pháp chung như sau:

{{ = TAG.name('a', 'b', _c = 'd')}}

Nó tạo ra mã XML là: <name c = "d"> ab </name>

TAG là một đối tượng và TAG.namehoặc TAG['name']là một hàm trả về một lớp trợ giúp tạm thời.

THỰC ĐƠN

Trình trợ giúp này tạo danh sách các mục trong danh sách hoặc giá trị của các mục trong menu, tạo ra một cấu trúc dạng cây đại diện cho menu. Danh sách các món trong thực đơn có dạngresponse.menu. Ví dụ -

print MENU([['One', False, 'link1'], ['Two', False, 'link2']])

Kết quả sẽ được hiển thị như sau:

<ul class = "web2py-menu web2py-menu-vertical">
   <li><a href = "link1">One</a></li>
   <li><a href = "link2">Two</a></li>
</ul>

ĐẸP

Nó giúp xây dựng các biểu diễn của các đối tượng ghép, bao gồm danh sách và từ điển. Ví dụ,

{{ = BEAUTIFY({"a": ["hello", XML("world")], "b": (1, 2)})}}

Nó trả về một đối tượng XML có thể tuần tự hóa thành XML, với một biểu diễn của đối số phương thức khởi tạo của nó. Trong trường hợp này, đại diện sẽ là:

{"a": ["hello", XML("world")], "b": (1, 2)}

Đầu ra sẽ được hiển thị dưới dạng:

<table>
   <tr>
      <td>a</td>
      <td>:</td>
      <td>hello<br />world</td>
   </tr>
   
   <tr>
      <td>b</td>
      <td>:</td>
      <td>1<br />2</td>
   </tr>
</table>

Hiển thị DOM phía máy chủ

Kết xuất phía máy chủ cho phép người dùng kết xuất trước trạng thái ban đầu của các thành phần web2py. Tất cả các trình trợ giúp có nguồn gốc cung cấp phần tử tìm kiếm và phần tử để hiển thị DOM trên phía máy chủ.

Các elementtrả về phần tử con đầu tiên phù hợp với một điều kiện đã chỉ định. Mặt khác,elementstrả về danh sách tất cả các con phù hợp. Cả hai đều sử dụng cùng một cú pháp.

Điều này có thể được chứng minh bằng ví dụ sau:

a = DIV(DIV(DIV('a', _id = 'target',_class = 'abc')))
d = a.elements('div#target')
d[0][0] = 'changed'
print a

Kết quả đầu ra là -

<div><div><div id = "target" class = "abc">changed</div></div></div>

Bố trí trang

Chế độ xem được sử dụng để hiển thị đầu ra cho người dùng cuối. Nó có thể mở rộng cũng như bao gồm các chế độ xem khác. Điều này sẽ thực hiện một cấu trúc giống như cây.

Ví dụ - “index.html” kéo dài đến “layout.html” có thể bao gồm “menu.html” lần lượt bao gồm “header.html”.

{{extend 'layout.html'}}
<h1>Hello World</h1>
{{include 'page.html'}}

Thí dụ

Trong các chương trước, chúng tôi đã tạo các mô hình và bộ điều khiển cho mô-đun công ty. Bây giờ, chúng ta sẽ tập trung vào việc tạo khung nhìn, giúp hiển thị dữ liệu.

Theo mặc định, các chế độ xem trong web2py bao gồm layout.htmlindex.html, xác định phần hiển thị dữ liệu tổng thể.

{{extend 'layout.html'}}
<h2>Companies</h2>

<table>
   {{for company in companies:}}
   <tr>
      <td>{{ = A(company.name, _href = URL('contacts', args = company.id))}}</td>
      <td>{{ = A('edit', _href = URL('company_edit', args = company.id))}}</td>
   </tr>
   
   {{pass}}
   <tr>
      <td>{{ = A('add company', _href = URL('company_create'))}}</td>
   </tr>
	
</table>

Đầu ra sẽ như sau: