|
@@ -2,7 +2,7 @@ PyWebIO
|
|
|
==================
|
|
|
|
|
|
PyWebIO是一个用于在浏览器上获取输入和进行输出的工具库。能够将原有的通过终端交互的脚本快速服务化,供其他人在网络上通过浏览器访问使用;
|
|
|
-PyWebIO还可以方便地整合进现有的Web服务,非常适合于构建对UI要求不高的后端服务。
|
|
|
+PyWebIO还可以方便地整合进现有的Web服务,让你不需要编写Html和JS代码,就可以构建出具有良好可用性的Web程序。
|
|
|
|
|
|
特点:
|
|
|
|
|
@@ -22,42 +22,18 @@ Install
|
|
|
Quick start
|
|
|
------------
|
|
|
|
|
|
-假设你编写了如下脚本来计算 `BMI指数 <https://en.wikipedia.org/wiki/Body_mass_index>`_ :
|
|
|
+**Hello, world**
|
|
|
|
|
|
-.. code-block:: python
|
|
|
-
|
|
|
- # BMI.py
|
|
|
- def bmi():
|
|
|
- height = input("请输入你的身高(cm):")
|
|
|
- weight = input("请输入你的体重(kg):")
|
|
|
-
|
|
|
- BMI = float(weight) / (float(height) / 100) ** 2
|
|
|
-
|
|
|
- top_status = [(14.9, '极瘦'), (18.4, '偏瘦'),
|
|
|
- (22.9, '正常'), (27.5, '过重'),
|
|
|
- (40.0, '肥胖'), (float('inf'), '非常肥胖')]
|
|
|
-
|
|
|
- for top, status in top_status:
|
|
|
- if BMI <= top:
|
|
|
- print('你的 BMI 值: %.1f,身体状态:%s' % (BMI, status))
|
|
|
- break
|
|
|
-
|
|
|
- if __name__ == '__main__':
|
|
|
- bmi()
|
|
|
-
|
|
|
-**在浏览器中进行输入输出**
|
|
|
-
|
|
|
-只需将输入输出函数替换成PyWebIO的输入输出函数就完成了改造(下面代码通过注释标出了改动部分)
|
|
|
+这是一个使用PywWebIO计算 `BMI指数 <https://en.wikipedia.org/wiki/Body_mass_index>`_ 的脚本:
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
- # BMI.py
|
|
|
- from pywebio.input import input # Change 1
|
|
|
- from pywebio.output import put_text # Change 1
|
|
|
+ from pywebio.input import input
|
|
|
+ from pywebio.output import put_text
|
|
|
|
|
|
def bmi():
|
|
|
- height = input("请输入你的身高(cm):") # Change 2
|
|
|
- weight = input("请输入你的体重(kg):") # Change 2
|
|
|
+ height = input("请输入你的身高(cm):")
|
|
|
+ weight = input("请输入你的体重(kg):")
|
|
|
|
|
|
BMI = float(weight) / (float(height) / 100) ** 2
|
|
|
|
|
@@ -67,48 +43,35 @@ Quick start
|
|
|
|
|
|
for top, status in top_status:
|
|
|
if BMI <= top:
|
|
|
- put_text('你的 BMI 值: %.1f,身体状态:%s' % (BMI, status)) # Change 3
|
|
|
+ put_text('你的 BMI 值: %.1f,身体状态:%s' % (BMI, status))
|
|
|
break
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
bmi()
|
|
|
|
|
|
-运行代码就可以在自动弹出的浏览器中与代码交互了:
|
|
|
+如果没有使用PywWebIO,这只是一个非常简单的脚本,而通过使用PywWebIO提供的输入输出函数,你可以在浏览器中与代码进行交互:
|
|
|
|
|
|
.. image:: /docs/assets/demo.gif
|
|
|
|
|
|
**向外提供服务**
|
|
|
|
|
|
-上文对使用PyWebIO进行改造的程序,运行模式还是脚本,程序计算完毕后立刻退出。可以使用 ``pywebio.start_server`` 将程序功能作为Web服务提供:
|
|
|
+上文对使用PyWebIO进行改造的程序,运行模式还是脚本,程序计算完毕后立刻退出。可以使用 `pywebio.start_server <https://pywebio.readthedocs.io/zh_CN/latest/server.html#pywebio.platform.start_server>`_ 将 ``bmi()`` 函数作为Web服务提供:
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
- # BMI.py
|
|
|
from pywebio import start_server
|
|
|
from pywebio.input import input
|
|
|
from pywebio.output import put_text
|
|
|
|
|
|
def bmi():
|
|
|
- height = input("请输入你的身高(cm):")
|
|
|
- weight = input("请输入你的体重(kg):")
|
|
|
-
|
|
|
- BMI = float(weight) / (float(height) / 100) ** 2
|
|
|
-
|
|
|
- top_status = [(14.9, '极瘦'), (18.4, '偏瘦'),
|
|
|
- (22.9, '正常'), (27.5, '过重'),
|
|
|
- (40.0, '肥胖'), (float('inf'), '非常肥胖')]
|
|
|
-
|
|
|
- for top, status in top_status:
|
|
|
- if BMI <= top:
|
|
|
- put_text('你的 BMI 值: %.1f,身体状态:%s' % (BMI, status))
|
|
|
- break
|
|
|
+ # same as above code
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
start_server(bmi)
|
|
|
|
|
|
**与现有Web框架整合**
|
|
|
|
|
|
-仅需在现有的Tornado应用中加入加入两个 ``RequestHandler`` ,就可以将使用PyWebIO编写的函数整合进 ``Tornado`` 应用中了
|
|
|
+仅需在现有的Tornado应用中加入加入两个 ``RequestHandler`` ,就可以将使用PyWebIO编写的函数整合进 ``Tornado`` 应用中
|
|
|
|
|
|
.. code-block:: python
|
|
|
|