- Python Pyramid 教程
- Python Pyramid - 首頁
- Python Pyramid - 概述
- Pyramid - 環境設定
- Python Pyramid - Hello World
- Pyramid - 應用配置
- Python Pyramid - URL 路由
- Python Pyramid - 檢視配置
- Python Pyramid - 路由字首
- Python Pyramid - 模板
- Pyramid - HTML 表單模板
- Python Pyramid - 靜態資源
- Python Pyramid - 請求物件
- Python Pyramid - 響應物件
- Python Pyramid - 會話
- Python Pyramid - 事件
- Python Pyramid - 訊息閃現
- Pyramid - 使用 SQLAlchemy
- Python Pyramid - Cookiecutter
- Python Pyramid - 建立專案
- Python Pyramid - 專案結構
- Python Pyramid - 包結構
- 手動建立專案
- 命令列 Pyramid
- Python Pyramid - 測試
- Python Pyramid - 日誌
- Python Pyramid - 安全
- Python Pyramid - 部署
- Python Pyramid 有用資源
- Python Pyramid - 快速指南
- Python Pyramid - 有用資源
- Python Pyramid - 討論
Python Pyramid - HTML 表單模板
在本章中,我們將瞭解 Pyramid 如何從 HTML 表單讀取資料。讓我們將以下 HTML 指令碼儲存為myform.html。我們將使用它來獲取 Template 物件並渲染它。
<html> <body> <form method="POST" action="https://:6543/students"> <p>Student Id: <input type="text" name="id"/> </p> <p>student Name: <input type="text" name="name"/> </p> <p>Percentage: <input type="text" name="percent"/> </p> <p><input type="submit" value="Submit"> </p> </body> </html>
在 Pyramid 物件的配置中新增的“index”路由對映到以下 index() 函式,該函式渲染上述 HTML 表單:
@view_config(route_name='index', renderer='templates/myform.html')
def index(request):
return {}
正如我們所看到的,使用者輸入的資料透過 POST 請求傳遞到 /students URL。因此,我們將新增一個“students”路由來匹配 /students 模式,並將其與 add() 檢視函式關聯,如下所示:
@view_config(route_name='students', renderer='templates/marklist.html')
def add(request):
student={'id':request.params['id'],
'name':request.params['name'],
'percent':int(request.params['percent'])} 9. Pyramid – HTML Form Template
students.append(student)
return {'students':students}
POST 請求傳送的資料以request.params物件的格式在 HTTP 請求物件中可用。它是一個 HTML 表單屬性及其值的字典,這些值由使用者輸入。這些資料被解析並附加到字典物件的學生列表中。更新後的 students 物件作為上下文資料傳遞給 marklist.html 模板。
marklist.html網頁模板與上一個示例中使用的相同。它顯示了一個學生資料表以及計算結果列。
<html>
<body>
<table border=1>
<thead>
<tr>
<th>Student ID</th> <th>Student Name</th>
<th>percentage</th>
<th>Result</th>
</tr>
</thead>
<tbody>
{% for Student in students %}
<tr>
<td>{{ Student.id }}</td>
<td>{{ Student.name }}</td>
<td>{{ Student.percent }}</td>
<td>
{% if Student.percent>=50 %}
Pass
{% else %}
Fail
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
示例
下面給出了包含用於渲染 HTML 表單、解析表單資料和生成顯示學生成績單表的頁面的完整程式碼:
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.view import view_config
students = [
{"id": 1, "name": "Ravi", "percent": 75},
{"id": 2, "name": "Mona", "percent": 80},
{"id": 3, "name": "Mathews", "percent": 45},
]
@view_config(route_name='index', renderer='templates/myform.html')
def index(request):
return {}
@view_config(route_name='students', renderer='templates/marklist.html')
def add(request):
student={'id':request.params['id'], 'name':request.params['name'],
'percent':int(request.params['percent'])}
students.append(student)
return {'students':students}
if __name__ == '__main__':
with Configurator() as config:
config.include('pyramid_jinja2')
config.add_jinja2_renderer(".html")
config.add_route('index', '/')
config.add_route('students','/students')
config.scan()
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 6543, app)
server.serve_forever()
輸出
要啟動伺服器,請從命令列執行上述 Python 程式碼。在您的瀏覽器中,訪問https://:6543/以獲取如下所示的表單:
輸入一個示例資料,如所示,然後按下提交按鈕。瀏覽器將重定向到 /students URL,該 URL 又會呼叫add()檢視。結果是一個成績單表,顯示新輸入的新學生的資料。
廣告