一种提供静态(或混合)内容的非常简单的wsgi方法。

static3-jl的Python项目详细描述


https://travis-ci.org/rmohr/static3.svg?branch=master
Authors:Roman Mohr <roman@fenkhuber.at>
Version:0.5.1
Date:2014-06-14
Code:https://github.com/rmohr/static3

这个软件是Luke Arnos库static中与python3兼容的fork。

库现在与python3兼容并支持Genshi(的成功者 kid)已添加。在python2上,genshi和/或kid可以用作模板引擎。打开 python3只有genshi可用。

这个库提供了一种简单的方法来包含静态内容 在您的wsgi应用程序中。有一种方便的服务方法 通过pkg_资源找到的文件。还有服务设施 使用“magic”文件处理程序混合(静态和动态)内容。 提供python内置字符串替换、kid和genshi模板支持 而且很容易把你自己的操作工卷起来。注意这个分布 不需要kid或genshi,除非您想使用那种类型的模板。阿尔索 提供一个同名的命令,方便您在需要时使用 通过http共享一点内容,特别的。

Installation and Usage

通过PIP发布的最新版本:

pip install static3

通过Github安装:

git clone https://github.com/rmohr/static3.git
cd static3
pip install .

Cling

cling仅提供静态内容。只要给它一个基本目录 要访问的文件。你会得到一个完整的wsgi应用程序,例如 很简单:

from static import Cling
from wsgiref.simple_server import make_server
my_app = Cling("/my/directory")
make_server("localhost", 9999, my_app).serve_forever()

现在您可以通过http://localhost:9999访问给定目录中的所有内容。

Shock

shock的基本功能与cling相同,但使用shock我们可以 也有一些模板的乐趣。休克来了三个模板后端。 弦代换,基德和根希。决定使用哪个后端 通过检查要服务的文件的扩展名。文件扩展名是“stp”, “孩子”和“根希”。所以如果你想通过 在kid后端,将文件命名为“index.html.kid”。举个简短的例子 像这样:

from static import Shock, KidMagic
from wsgiref.simple_server import make_server
my_app = Shock("/my/directory", magics=[KidMagic(title="Hello World")])
make_server("localhost", 9999, my_app).serve_forever()

以及示例“index.html.kid”:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:py="http://purl.org/kid/ns#"
  xml:lang="en">
  <head>
  </head>
  <body>
    <h1>$title</h1>
  </body>
</html>

genshi的类似模板“index.html.genshi”:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:py="http://genshi.edgewall.org/"
  xml:lang="en">
  <head>
  </head>
  <body>
    <h1>$title</h1>
  </body>
</html>

这个简单的应用程序将把占位符title替换为“hello world” 在每个以'.kid'结尾的文件中。 在这个例子中已经很明显了,尽管不同的模板 发动机可以使用,它们只能以非常静态的方式使用。从来没有 较少的震动非常适合于简单的半静态的东西,比如 公司徽标或公司名称变量的URL。

Unicode Support

在python3中使用模板系统时,可能需要显式地 为提供的站点设置编码。这可以通过 编码休克的属性:

from static import Shock
shock = Shock("/var/www/pub")
shock.encoding="latin-1"

当使用clingshock服务于静态内容时 不需要设置编码,因为内容只是流式传输。 如果您有以不同格式编码的模板,则 需要为使用的每个编解码器实例化shock。

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

推荐PyPI第三方库


热门话题
java在搜索二进制搜索树时遇到问题   当try block中的多行抛出异常时,java使用TryWithResources而不是finally block   java什么时候需要动态多态性(与静态多态性相比)?   从对象类型的角度来看,java的子类是否与racine类等价?   JavaSpring数据JDBConetomany关系会导致大量日志警告   Java:无法更改响应标头中的“ContentDisposition”属性   Java:我可以直接初始化函数而不将其转换为变量吗?   java do,而游标仅从数组返回3个值   java StoredProcedureQuery多输出类型   java ForLoops最大和最小数   如何在java中的任何机器上读取文本文件   java从嵌套标记中获取XML字符串中包含的值   java如何解决Spring批处理作业运行期间的连接重置异常?   我在运行时创建的java Swing组件没有显示在JPanel中   Apache Jena:Error:“java.lang.NoClassDefFoundError:org/Apache/Jena/riot/RDFDataMgr”   java访问嵌套接口数据变量   java如果CopyOnWriteArrayList中的项目被不同的线程更新和读取,我需要同步它们吗?   在Java数组中不断迭代   java组织。贾维斯。常见的例外JaversException:NOT_INSTANCE_OF:无法为EntityType创建InstanceId