更容易分享Wagtail草稿
项目描述
wagtail-sharing
更容易分享 Wagtail 草稿。
Wagtail Sharing 可以让您更容易地与没有访问Wagtail管理站点的用户共享Wagtail草稿内容。它允许您定义一个替代主机名和/或端口,在该端口上公开所有Wagtail页的最新版本。
例如,假设您的Wagtail站点运行在 http://mysite.com。您已创建一个位于slug /path/to/draft 的草稿页面,但尚未发布。Wagtail Sharing 允许您在某个其他域名上公开该草稿页面,例如 http://sharing.mysite.com/path/to/draft。
在另一个用例中,您可能有一个已发布的页面在 http://mysite.com/already/published/page,并且您已经对某些草稿进行了修改。Wagtail Sharing 允许您在 http://sharing.mysite.com/already/published/page 暴露这些草稿更改,同时在您的常规域名上保持相同的内容。
这些示例显然在您有一些方法来限制对 http://sharing.mysite.com 的访问时效果最佳,例如,仅通过私人网络公开该子域。
Wagtail Sharing 允许您为每个已定义的 Wagtail 站点创建独立的共享站点。它还支持共享页面上的可配置视觉横幅,以提醒审阅者内容可能与已发布的站点不同。
此新逻辑仅适用于 GET 请求。其他 HTTP 方法如 POST 将延迟到标准的 Wagtail 处理。
设置
使用 pip 安装包
$ pip install wagtail-sharing
将 wagtailsharing 添加到您的 Django 设置中已安装的应用程序
# in settings.py
INSTALLED_APPS = (
...
'wagtailsharing',
...
)
wagtail.snippets 也需要,并且必须包含在您的已安装应用程序列表中。
以下代码示例假设您正在使用最新的 Wagtail 版本(3.0+)。
运行迁移以创建所需的数据库表
$ python manage.py migrate wagtailsharing
替换 Wagtail 的通配符 URL 模式
# in urls.py
-from wagtail import urls as wagtail_urls
+from wagtailsharing import urls as wagtailsharing_urls
...
-urlpatterns.append(url(r'', include(wagtail_urls)))
+urlpatterns.append(url(r'', include(wagtailsharing_urls)))
创建新的共享站点
在遵循上述设置步骤之后,您应该能够创建一个新的共享站点,在本地 Django 开发服务器上使用此功能。假设您正在默认端口 8000 上运行本地开发服务器,并且那里的页面正在 http://localhost:8000 上提供服务。我们想在 http://sharing.localhost:8000 上创建一个新的共享站点,最新页面修订将在其中公开。
要模拟在不同主机名上访问您的站点,您需要放宽 Django 的默认安全设置,该设置仅允许在 localhost 上访问。编辑您的设置文件(例如 myproject/settings/local.py),添加以下内容
ALLOWED_HOSTS = ['*']
验证您是否可以访问本地服务器 http://sharing.localhost:8000。您应该在那里看到与 http://localhost:8000 上相同的内容,因为您尚未为默认站点启用 wagtail-sharing。
为此,在 Wagtail 管理中,在“设置”下的共享站点中,为默认站点创建一个新的共享站点,主机名为 sharing.localhost,端口号为 8000。
现在,您的最新页面修订(包括草稿)应该在 http://sharing.localhost:8000 上可用。
钩子
与正常页面服务一样,共享页面的服务继续遵守Wagtail内置的 before_serve_page 钩子。
本项目还添加了以下附加钩子
before_route_page
在路由时调用,在调用页面的 route() 方法之前。此钩子传递 request 和将对其调用 route() 的页面。如果可调用对象返回一个 HttpResponse,则将立即将该响应返回给用户。
此钩子允许对Wagtail的内置路由行为进行任何必要的自定义,例如支持 ShareableRoutablePageMixin。
混合
默认情况下,Wagtail的 RoutablePageMixin 与Wagtail-Sharing不兼容,相反,您需要使用 ShareableRoutablePageMixin 才能在可路由页面上查看共享草稿内容字段。
ShareableRoutablePageMixin 的使用方式与 RoutablePageMixin 完全相同。
from wagtail.fields import RichTextField
from wagtail.models import Page
from wagtail.contrib.routable_page.models import route
from wagtailsharing.models import ShareableRoutablePageMixin
class EventIndexPage(ShareableRoutablePageMixin, Page):
intro = RichTextField()
@route(r'^$')
def current_events(self, request):
# …
@route(r'^past/$')
def past_events(self, request):
# …
兼容性
本项目已针对以下内容进行了兼容性测试
Python 3.9+
Django 3.2+
Wagtail 5.1+(有关对旧版Wagtail的支持,请参阅过去版本)
它应该与所有中间版本兼容。如果您发现它不兼容,请 提交问题。
测试
运行项目单元测试需要 tox
$ tox
要交互式运行测试应用程序,请运行
$ tox -e interactive
现在您可以在浏览器中访问 http://localhost:8000/admin/ 并使用 admin / changeme 登录。
开源许可信息
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
wagtail-sharing-2.12.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b3e5dae312b2c35916dabc8afc21884582cfe5407b279944435efbba266eba1 |
|
MD5 | c1e2f2348a056a608d65b817b7ccd3d5 |
|
BLAKE2b-256 | cd48d1be34759512bd6e4161178b2d78cc50d87b0231a2cdd369e52d16239adc |
wagtail_sharing-2.12.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 189f2dd8e6862f3ef8eaff8b4df954c19b2a14f9848a49ef51e8abfaa5ae9847 |
|
MD5 | b5e8cb32ee39f11020ff9f69f194b44f |
|
BLAKE2b-256 | 56a205bc35a59188a48fe8f080c691f0c5304f72570006d69a3bd982286138e4 |