模板标签和中间软件,以建立规范的amp页与django容易。

django-canonical-amp的Python项目详细描述


PyPI version

django标准放大器

一组小工具,旨在使用Django构建规范的AMP页面变得更容易。

安装

要启用此软件包的功能,您需要将其添加到项目设置的各个键(默认为settings.py)中,就像添加到其他django应用程序中一样。

已安装的应用程序

Django Canonical AMP需要添加到已安装的应用程序中。

INSTALLED_APPS=[# ...'amp',]

模板

此外,您需要更新模板设置以使用django规范amp后端,它只是django默认后端的包装器。

TEMPLATES=[{'BACKEND':'amp.template.backends.amp.AmpTemplates',# ...},]

中间件

此步骤是可选的,但是如果您想直接从django应用程序提供server-side-rendered AMP服务,可以将transformer中间件添加到堆栈中。

重要:这是实验性的。转换通过使用从amppackager的go实现构建的共享库来实现。这个包附带了linux/amd64darwin/amd64操作系统的编译版本。

如果要使用此中间件,还需要确保生产系统能够执行对https://cdn.ampproject.org/rtv/metadata的请求,以便转换器能够获取当前运行时版本。

MIDDLEWARE=[# ...'amp.middleware.AmpOptimizerMiddleware',]

此中间件需要在django的django.middleware.gzip.GZipMiddleware之前执行,以便转换器能够更改响应。

如果您使用这个中间件,您还可以在设置中将AMP_REWRITE_URLS设置为False。通过这样做,您可以指示转换器将您的url放在一边,而不要将它们重写为amp缓存url-这有利弊:虽然不能保证您的内容(和资产)已经从缓存中可用,但从缓存中传递时间可能更好。此设置默认为not DEBUG,不重写所有非生产环境的url。

依赖于应用程序提供的api端点的amp组件需要根据AMP's CORS specification提供它们。django canonical amp附带了另一个添加所需头部的中间件。要使其正常工作,请确保服务器能够访问https://cdn.ampproject.org/caches.json。然后将中间件添加到堆栈中:

MIDDLEWARE=[# ...'amp.middleware.AmpCorsMiddleware',]

用法

包的基本功能是安装后可用的两个模板标记。它们使它能够动态地定义使用过的AMP components。为了让它们在html的<head>中来回移动,请确保添加了{% amp.components %}标记,如下所示:

{% load amp %}

<!DOCTYPE html><htmllang="de"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,minimum-scale=1"><metaname="description"content="{{ description }}"><linkrel="preload"as="script"href="https://cdn.ampproject.org/v0.js"><scriptasyncsrc="https://cdn.ampproject.org/v0.js"></script>

    {% amp.components %}
    <!-- This will expand to a list of <script> tags:    <script async custom-element="amp-..." src="https://cdn.ampproject.org/v0/amp-...-0.1.js"></script>    --><styleamp-custom>{%blockstyle%}{%endblock%}</style>

在模板的其他地方,您可以通过调用{% amp.require_component "<component>" "<version>" %}来定义依赖项,如下例所示:

{% if youtube_id %}
{% amp.require_component "amp-youtube" %}
<amp-youtubedata-videoid="{{ youtube_id }}"layout="responsive"width="480"height="270"></amp-youtube>
{% endif %}

在上面的例子中,如果youtube_id的计算结果为False,那么amp-youtube扩展将不会被注入到您的页面,并且它将保持amp有效。

版本可以省略。然后默认为0.1。

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

推荐PyPI第三方库


热门话题
java将列表a作为从流收集的映射中的值   java SVN Eclipse忽略所有用户的文件夹   @PathVariable类型不匹配的java配置错误页   java在应用程序中使用Oracle数据库需要什么?   java无法确定用户何时为我的自定义异常输入数字小于0的问题   java如何通过软件导航网站?   java将JFace TableViewer添加到SWT表   Java中“field”和“this.field”的区别   java战舰代码不工作   java如何设置可执行IE 11驱动程序的路径   java这个程序如何一步一步地计算两个区间之间的阿姆斯特朗数?   JavaRestlet:在过滤器中使用转换器服务   Tensorflow:如何在java中使用python训练的语音识别模型   EclipseJava。util。使用迭代器从HashMap获取ArrayList时出现NoTouchElementException   Java Swing启动屏幕配置错误   为什么MySQL浮点与Java浮点不同?