跳转到主要内容

创建可以链接到wagtail页面的QR码

项目描述

Wagtail QR码

此软件包可用于在Wagtail CMS中创建具有相应QR码的页面。

Alt text

功能

  • 生成的QR码以EPS文档的形式保存,可以打印。扫描后,将通过页面ID重定向链接到页面。
  • 您可以下载生成的QR码,并在海报、明信片、横幅、啤酒垫等印刷广告中使用它。
  • 在保存草稿或发布页面时,您可以将一次性电子邮件地址添加到附件中,将qr-code发送出去。

安装

要将软件包添加到自己的Wagtail CMS中

在环境中安装软件包。

pip install wagtail-qrcode

将软件包添加到网站设置中。

INSTALLED_APPS = [
    # ...
    "wagtail_qrcode",
    # ...
]

将此设置添加到Wagtail设置中。

它用于生成QR码的基础URL

WAGTAIL_QR_CODE_BASE_URL = "your-site-url"

您可能需要使用另一台设备测试QR码。您的设备需要能够解析测试域名,本地主机可能无法工作。

尝试使用ngrok等服务来设置指向本地主机的URL,并将该域名用作WAGTAIL_QR_CODE_BASE_URL设置。

这是启动ngrok的命令。

./ngrok http 8000 --scheme=http

使用QRCode页面模型混入

在新的或现有的页面模型中使用模型混入。

# models.py

from wagtail.admin.panels import (
    FieldPanel,
    MultiFieldPanel,
    ObjectList,
    TabbedInterface,
)
from wagtail.models import Page

from wagtail_qrcode.admin_forms import QrCodeEmailForm
from wagtail_qrcode.models import QRCodeMixin


class QRCodePage(QRCodeMixin, Page):
    qrcode_panels = QRCodeMixin.panels + [
        MultiFieldPanel(
            [
                FieldPanel("email_address"),
                FieldPanel("email_subject"),
                FieldPanel("email_body"),
            ],
            heading="Send QR code via email",
        )
    ]

    edit_handler = TabbedInterface(
        [
            ObjectList(Page.content_panels, heading="Content"),
            ObjectList(Page.promote_panels, heading="Promote"),
            ObjectList(Page.settings_panels, heading="Settings", classname="settings"),
            ObjectList(qrcode_panels, heading="QR Code", classname="qr-code"),
        ]
    )

    base_form_class = QrCodeEmailForm

这将在页面编辑器中添加一个新标签页QR码,您可以在此处预览生成的QR码并访问可下载的打印就绪EPS文件。(文件也可以在文档应用中找到)

如果您不需要能够通过电子邮件发送QR码,则您的页面模型可以是

# models.py

from wagtail.admin.panels import (
    FieldPanel,
    MultiFieldPanel,
    ObjectList,
    TabbedInterface,
)
from wagtail.models import Page

from wagtail_qrcode.models import QRCodeMixin


class QRCodePage(QRCodeMixin, Page):
    qrcode_panels = QRCodeMixin.panels

    edit_handler = TabbedInterface(
        [
            ObjectList(Page.content_panels, heading="Content"),
            ObjectList(Page.promote_panels, heading="Promote"),
            ObjectList(Page.settings_panels, heading="Settings", classname="settings"),
            ObjectList(qrcode_panels, heading="QR Code", classname="qr-code"),
        ]
    )

URLS

wagtail_urls之前将wagtail-qrcode URLs包含到您的网站URL中。

该URL在扫描和浏览器的QR码时提供重定向端点。

urlpatterns = [
    # ...
    path("qr-code/", include("wagtail_qrcode.urls")),
    # ...
]

或导入视图并将视图传递给路径函数

from wagtail_qrcode.views import qr_code_page_view

urlpatterns = [
    # ...
    path("qr-code/", qr_code_page_view, name="qr-code-view"),
    # ...
]

配置

设置配置(可选,这些是默认值)

WAGTAIL_QR_CODE = {
    "collection_name": "QR Codes",
    "scale": 3,
    "quiet_zone": 6,
    "svg_has_xml_declaration": False,
    "svg_has_doc_type_declaration": False,
}
  • collection_name:自动创建并用作所有生成QR码的集合
  • scale:QR码中点的尺寸
  • quiet_zone:QR码周围的空白边框
  • svg_has_xml_declaration:QR码SVG是否有XML声明
  • svg_has_doc_type_declaration:QR码SVG是否有HTML文档类型声明

贡献

如果您想对该软件包提出改进建议,欢迎贡献

问题

如果您发现一个问题,请考虑提出问题

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

wagtail_qrcode-2.1.0.tar.gz (15.8 kB 查看散列)

上传时间

构建分布

wagtail_qrcode-2.1.0-py3-none-any.whl (17.0 kB 查看散列)

上传时间 Python 3

由以下支持