用于python应用程序的rendertron中间件

rendertron的Python项目详细描述


python rendertron

Rendertron middleware for Python applications.

Build StatusCoverage StatusCode style: black

Rendertron是无头铬合金 渲染解决方案旨在动态渲染和序列化网页。这个 这个包的目标是提供中间件来使用 Rendertron服务并使结果可用。

这使得可以呈现渐进式web应用程序(pwa),等等 使它完全呈现(完成初始数据加载等)并使用 完全构建标记作为响应。

另外,用户可以更快地看到完全呈现的应用程序 还允许搜索引擎正确索引标记。

安装

按照中的步骤安装rendertron服务 the documentation

使用pip

安装此软件包
pip install rendertron

您还可以使用pip-e标志安装最新的开发版本:

pip install -e git://git@github.com:frontendr/python-rendertron.git@develop#egg=rendertron

这将安装develop分支。

django

首先,将'rendertron'添加到设置中的INSTALLED_APPS列表中。

那么您有两个选择:

  • 启用middleware并呈现与 RENDERTRON_INCLUDE_PATTERNS或与中的任何内容都不匹配 RENDERTRON_EXCLUDE_PATTERNS。有关详细信息,请参阅配置部分 那些。
  • 使用@rendertron_render装饰器装饰特定视图,使其仅允许呈现 使用rendertron服务的那些视图。

中间件

  1. 'rendertron.middleware.DjangoRendertronMiddleware'添加到MIDDLEWARE 在设置中列出。
  2. 确保指定RENDERTRON_INCLUDE_PATTERNS以指定路径模式 将由rendertron服务或RENDERTRON_EXCLUDE_PATTERNS_EXTRA提供的 只指定要排除的内容。

装饰特定视图

不依赖于中间件和设置,还可以修饰 使用@rendertron_render装饰器的特定视图。

fromrendertron.decorators.djangoimportrendertron_render@rendertron_renderdefmy_view(request):...

对于基于类的视图,使用django的^{}

fromdjango.utils.decoratorsimportmethod_decoratorfromdjango.views.genericimportTemplateViewfromrendertron.decorators.djangoimportrendertron_render@method_decorator(rendertron_render,name="dispatch")classMyView(TemplateView):...

配置

大多数配置是通过指定特定变量来完成的。对于django用户 这是在你的网站设置中完成的。

以下设置可用:

SettingDefaultDescription
^{}^{}The url the Rendertron service is listening on.
^{}^{}The query parameter added to the request url passed to Rendertron. This is used to differentiate normal requests with requests from Rendertron.
^{}See StorageAn object literal specifying and configuring the storage class to be used. See the Storage section for more information.
^{}^{}A list of regular expression patterns to include. Once a pattern in this list matches the request no further checking will be done.
^{}List of common extensions.By default this is a list of common static file type extensions used on the web. If Django is detected it's ^{} and ^{} paths are added to the list. Note that if you override this setting all defaults are gone. If you want to keep these defaults and add your own patterns use ^{}.
^{}^{}Like ^{} but will be appended to that list.

储存

存储类正在处理存储来自 Rendertron服务一段时间。他们处理如果,如何,在哪里,如何 很长一个结果被存储。有一些核心存储类可用 系统的建立是为了让你很容易建立自己的。

选择一个内置存储类取决于您的框架。

任何框架:DummyStorage

一个不做任何事情的存储类。它不会储存也永远不会回来 存储的结果。

要使用它,只需将RENDERTRON_STORAGE['CLASS']设置为 'rendertron.storage.DummyStorage'。它没有选择。

django:DjangoCacheStorage

利用django的缓存框架来存储结果的存储类。

要使用它,只需将RENDERTRON_STORAGE['CLASS']设置为 'rendertron.storage.DjangoCacheStorage'。它有以下选项:

SettingDefaultDescription
^{}Django's ^{} cache setting which is ^{} (5 minutes)The number of seconds the result should be stored in the cache. It's the ^{} argument for Django's ^{} method.
^{}^{}The ^{} argument which is passed to Django's ^{} method.

示例配置:

RENDERTRON_STORAGE={'CLASS':'rendertron.storage.DjangoCacheStorage','OPTIONS':{'TIMEOUT':300,}}

运行测试

首先安装django以测试django相关的东西。

pip install django

然后使用提供的最小设置文件通过django-admin运行测试。

django-admin test --pythonpath . --settings tests.django.settings

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误