最简单的web框架

pyterrier的Python项目详细描述


构建状态pypi

小猎犬

这个项目的开始是出于我的好奇心,我想了解web框架是如何在幕后工作的,我想研究一下 非常接近http模块,而且感觉到python社区需要用python 3编写框架,所以 我们可以利用它的所有整洁的特点。pyterrier深受flask、django和微软web api等框架的启发。

突出显示功能

  • 用python 3.7编写
  • 喜欢的约定胜过配置
  • 值简单代码
  • 灵活
  • 提供一个干净的项目结构

快速启动

最快的入门方法是在虚拟环境中安装pyterrier,并使用pyterrier cli创建 新项目:

  1. 为应用程序创建新目录
mkdir myapp &&cd myapp
  1. 创建一个虚拟环境(确保您有Python3.6或更高版本)
pipenv --three
  1. 激活虚拟环境
pipenv shell
  1. 安装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
<表><广告>项目说明 < /广告><正文>应用程序它是应用程序的根,显然它可以是您喜欢的任何名称app.py这是应用程序的入口点,您可以在这里初始化应用程序并注册路由控制器控制器目录将是包含您的操作的位置文件静态 static目录是放置应用程序所有静态资产的位置。css、javascript、图像、字体…模板这是pyterrier查找要呈现的模板的文件夹

一个非常简单的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 myapp
0

这里要注意的一点是,pyterrier中的每个函数都有第一个参数self。自我是指 函数本身并公开一个名为request的属性 进行。请求对象公开请求路径、参数和头值。

现在假设我们想在url中传递一个参数,您可以使用一个参数占位符:

mkdir myapp &&cd myapp
1

当向/sayhello/to/daniel发出get请求时,包含消息的html内容hellooo,daniel!将返回。

目前只支持strint参数占位符。

要返回带有结果的http/200响应,可以使用ok函数。

mkdir myapp &&cd myapp
2

现在,有些情况下,将所有api端点保存在一个文件中是不可行的。按照惯例,pyterrier查找在应用程序根目录中controllers文件夹中的文件中注册的操作。 这样,我们可以创建一个名为controllers的新文件夹,在该文件夹中,我们可以创建一个名为usercontroller.py的文件,其中包含以下内容:

mkdir myapp &&cd myapp
3

我们还需要在应用程序的主文件中执行一些更改,例如:

mkdir myapp &&cd myapp
4

代码与我们以前的非常相似,但是现在我们调用方法init_routes。此方法将查找 在controllers目录中的所有文件,并注册它找到的所有操作。此外,参数prefix_routes设置为true意味着它将在路由前面加上控制器前缀。例如,我们刚刚在usercontroller文件中注册的路由是/get/{id:int},并且将前缀路由设置为true它将变为/user/get/{id:int}

将数据发布到服务器

执行post请求和get一样简单。只需要导入@post装饰器和 从self.request.params中获取请求数据

mkdir myapp &&cd myapp
5

发出请求

mkdir myapp &&cd myapp
6

删除请求

mkdir myapp &&cd myapp
7

为项目做出贡献

有关详细信息,请参见contribution.md

版权和许可

版权所有(c)2017daniel furtado。在BSD 3条款许可下发布的代码

学分

这个包是用cookiecutter和项目模板创建的。

历史记录

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上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何设置分割PdfPCell的最小高度   java Apache POI pptx图像处理时间过长   如果我更改jar文件的位置,则java jar文件不拍摄图像   java如何从客户端读取领事键值?   Java函数接口中的泛型类型安全   java无法解析:E/RecyclerView:未连接适配器;正在跳过布局,并且无法为子()中的参数“pathString”传递null   java异常postGIS几何映射与JPA   hibernate初始SessionFactory创建失败。JAVAlang.NoClassDefFoundError:org/hiber-nate/cfg/Configuration   java为什么BoxLayout不能共享,而FlowLayout可以共享?   名为“undefined”的java文件在api响应中返回,spring boot   java在一个对象中只允许一个非空字段的好方法是什么   日期java SimpleDataFormat错误地解析给定的时间戳   用于实现lambda可能接口的枚举的java速记符号