最简单的web框架
pyterrier的Python项目详细描述
小猎犬
这个项目的开始是出于我的好奇心,我想了解web框架是如何在幕后工作的,我想研究一下 非常接近http模块,而且感觉到python社区需要用python 3编写框架,所以 我们可以利用它的所有整洁的特点。pyterrier深受flask、django和微软web api等框架的启发。
突出显示功能
- 用python 3.7编写
- 喜欢的约定胜过配置
- 值简单代码
- 灵活
- 提供一个干净的项目结构
快速启动
最快的入门方法是在虚拟环境中安装pyterrier,并使用pyterrier cli创建 新项目:
- 为应用程序创建新目录
mkdir myapp &&cd myapp
- 创建一个虚拟环境(确保您有Python3.6或更高版本)
pipenv --three
- 激活虚拟环境
pipenv shell
- 安装pyterrier
pipenv install pyterrier
创建第一个应用程序
现在已经安装了pyterrier,您可以使用cli创建第一个应用程序,执行下面的命令:
pyterrier --newapp myapp --currentdir
--newapp
选项指定应用程序的名称,当您希望cli创建
当前目录中的应用程序文件,如果没有此选项,cli将创建一个与您的应用程序同名的目录
并在其中创建文件。
就这样,你搞定了!
默认情况下,应用程序将在端口8000上运行。打开浏览器,转到http://localhost:8000" rel="nofollow">http://localhost:8000
要获得pyterrier cli中可用选项的完整描述,您可以使用类似于sopyterrier--help的
--help
选项,您将看到下面的输出:
Usage: pyterrier [OPTIONS] Options: --currentdir Create the app on the current directory. --newapp NAME Name of the new app. --newcontroller NAME Name of the new controller. --help Show this message and exit.
给我看看密码!!
pyterrier最喜欢的约定超过了配置,因此项目需要遵循特定的结构才能工作,例如,最小的裸骨pyterrier应用程序将具有以下结构:
app ├── app.py ├── controllers ├── static └── templates<表><广告>
一个非常简单的pyterrier应用程序看起来有点像这样:
frompyterrierimportPyTerrierfrompyterrier.httpimportViewResultapp=PyTerrier(port=3000)@app.get('/sayhello')defsayhello(self):returnViewResult('index.html',{'message':'Hellooooo!'})app.run()
此代码将启动在端口3000上运行的服务器,并定义一个函数,该函数将在向/sayhello
发出get请求时执行。
sayHello
函数将返回一个viewResult获取模板、上下文,并使用您选择的模板引擎呈现它。默认情况下,pyterrier使用jinja2。
让我们看看模板的样子。
为了避免重复HTML代码,我们有一个基本文件。
<html><head></head><body><h1>My first PyTerrier application</h1> {% block content %} {% endblock %} </body></html>
然后我们将内容html称为index.html
mkdir myapp &&cd myapp0
这里要注意的一点是,pyterrier中的每个函数都有第一个参数self。自我是指
函数本身并公开一个名为request的属性
进行。
请求对象公开请求路径、参数和头值。
现在假设我们想在url中传递一个参数,您可以使用一个参数占位符:
mkdir myapp &&cd myapp1
当向/sayhello/to/daniel
发出get请求时,包含消息的html内容hellooo,daniel!
将返回。
目前只支持str
和int
参数占位符。
要返回带有结果的http/200响应,可以使用ok
函数。
mkdir myapp &&cd myapp2
现在,有些情况下,将所有api端点保存在一个文件中是不可行的。按照惯例,pyterrier查找在应用程序根目录中controllers
文件夹中的文件中注册的操作。
这样,我们可以创建一个名为controllers
的新文件夹,在该文件夹中,我们可以创建一个名为usercontroller.py
的文件,其中包含以下内容:
mkdir myapp &&cd myapp3
我们还需要在应用程序的主文件中执行一些更改,例如:
mkdir myapp &&cd myapp4
代码与我们以前的非常相似,但是现在我们调用方法 执行post请求和get一样简单。只需要导入 有关详细信息,请参见contribution.md。 版权所有(c)2017daniel furtado。在BSD 3条款许可下发布的代码 这个包是用cookiecutter和项目模板创建的。init_routes
。此方法将查找
在controllers
目录中的所有文件,并注册它找到的所有操作。此外,参数prefix_routes
设置为true
意味着它将在路由前面加上控制器前缀。例如,我们刚刚在usercontroller
文件中注册的路由是/get/{id:int}
,并且将前缀路由设置为
true
它将变为/user/get/{id:int}
。
将数据发布到服务器
@post
装饰器和
从self.request.params中获取请求数据
mkdir myapp &&cd myapp
5
发出请求
mkdir myapp &&cd myapp
6
删除请求
mkdir myapp &&cd myapp
7
为项目做出贡献
版权和许可
学分
历史记录
0.1.4(2018-10-29)
0.1.3(2018-10-26)
0.1.2(2018-10-26)
0.1.0(2018-10-26)
推荐PyPI第三方库