TurboGears - Phương thức HTTP
Giao thức Http là nền tảng của giao tiếp dữ liệu trong world wide web. Các phương pháp truy xuất dữ liệu khác nhau từ URL đã chỉ định được xác định trong giao thức này. Bảng sau đây tóm tắt các phương thức http khác nhau:
Sr.No. | Phương thức và mô tả HTTP |
---|---|
1 | GET Gửi dữ liệu ở dạng không được mã hóa đến máy chủ. Phương pháp phổ biến nhất. |
2 | HEAD Giống như GET, nhưng không có nội dung phản hồi |
3 | POST Được sử dụng để gửi dữ liệu biểu mẫu HTML đến máy chủ. Dữ liệu nhận được bằng phương thức POST không được máy chủ lưu vào bộ nhớ đệm. |
4 | PUT Thay thế tất cả các bản trình bày hiện tại của tài nguyên đích bằng nội dung đã tải lên. |
5 | DELETE Loại bỏ tất cả các đại diện hiện tại của tài nguyên mục tiêu được cung cấp bởi một URL |
Tạo một biểu mẫu HTML
Hãy để chúng tôi tạo một Biểu mẫu HTML và gửi dữ liệu biểu mẫu tới một URL. Lưu tập lệnh sau dưới dạng login.html
<html>
<body>
<form action = "http://localhost:8080/login" method = "get">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
Dữ liệu đã nhập trong biểu mẫu này sẽ được gửi đến ‘/login’ URL. Bây giờ hãy tạo một hàm điều khiểnloginpage() và hiển thị trang html ở trên với nó.
@expose("hello.templates.login")
def loginpage(self):
return {}
Để nhận dữ liệu biểu mẫu, hãy cung cấp login()bộ điều khiển, có các thuộc tính biểu mẫu làm tham số của nó. Đây‘nm’ là tên của trường nhập văn bản trong biểu mẫu đăng nhập, được sử dụng như một tham số của hàm login ().
@expose("hello.templates.sample")
def login(self, nm):
name = nm
return {'person':name}
Như có thể thấy, dữ liệu nhận được từ biểu mẫu đăng nhập đang được gửi đến mẫu sample.html (được sử dụng trước đó). Nó được phân tích cú pháp bởi mộtGenshi template engine để tạo ra kết quả sau:
Phương pháp ĐĂNG
Khi biểu mẫu HTML sử dụng phương thức POST để gửi dữ liệu đến thuộc tính URL trong hành động, dữ liệu biểu mẫu không được hiển thị trong URL. Dữ liệu được mã hóa được nhận trong mộtdictđối số của hàm điều khiển. Các **kw đối số bên dưới là đối tượng từ điển giữ dữ liệu.
Biểu mẫu HTML chứa hai trường văn bản đầu vào.
<html>
<body>
<form action = "http://localhost:8080/marks" method = "post">
<p>Marks in Physics:</p>
<p><input type = "text" name = "phy" /></p>
<p>Marks in Maths:</p>
<p><input type = "text" name = "maths" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
Các marks() bộ điều khiển nhận dữ liệu biểu mẫu và gửi nó đến sample.htmlbản mẫu. Mã choroot.py như sau -
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose("hello.templates.marks")
def marksform(self):
return {}
@expose("hello.templates.sample")
def marks(self, **kw):
phy = kw['phy']
maths = kw['maths']
ttl = int(phy)+int(maths)
mydata = {'phy':phy, 'maths':maths, 'total':ttl}
return mydata
Cuối cùng, mẫu sample.html như sau:
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
<h3>Marks in Physics: ${phy}.</h3>
<h3>Marks in Maths: ${maths}.</h3>
<h3>Total Marks: ${total}</h3>
</body>
</html>
Khởi động máy chủ (nếu chưa chạy)
Gearbox server –reload –debug
Đi vào http://localhost::8080/marksform trong trình duyệt
Các sample.html sẽ hiển thị đầu ra sau -