更容易分享摇摆气流
wagtail-sharing的Python项目详细描述
摇尾共享
更轻松地共享wagtail草稿。
wagtail共享使共享wagtail草稿内容更容易,供没有wagtail管理网站访问权限的用户审阅。它允许您定义一个备用主机名和/或端口,以便在其中公开所有wagtail页面的最新版本。
例如,假设您的wagtail站点在http://mysite.com上运行。您已经在slug
在另一个用例中,您可能在http://mysite.com/already/published/page" rel="nofollow">http://mysite.com/already/published/page上有一个已发布的页面,并且您已经进行了一些草稿更改。wagtail共享允许您在http://sharing.mysite.com/already/published/page" rel="nofollow">http://sharing.mysite.com/already/published/page上公开这些草稿更改,同时在常规域中保持相同的已发布内容。
当您有某种方法限制对http://sharing.mysite.com的访问时,这些示例显然最有效,例如只在专用网络上公开该子域。
wagtail共享允许您为定义的每个wagtail站点创建单独的共享站点。它还支持共享页面上可配置的可视横幅,以提醒审阅者内容可能与您发布的网站不同。
这个新逻辑只适用于 get 请求。其他http方法,如 post 遵从标准的wagtail处理。
设置
使用pip安装软件包:
$ pip install wagtail-sharing
将wagtailsharing添加为django设置中的已安装应用程序:
# in settings.pyINSTALLED_APPS=(...'wagtailsharing',...)
wagtail.contrib.modeladmin也是必需的,并且必须包含在已安装应用程序的列表中。
运行迁移以创建所需的数据库表:
$ manage.py migrate wagtailsharing
替换使用wagtail的catch all url模式:
# in urls.py -from wagtail.core 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)))
共享站点
wagtail管理员现在在名为"共享站点"的设置下包含一个新的部分,允许用户定义他们希望如何公开最新的页面修订。
默认情况下不存在共享站点。必须为每个wagtail站点手动创建共享站点,以使其最新版本可共享。每个共享站点都由唯一的主机名和端口号定义。 重要提示:不正确配置共享站点可能会公开草稿/私有内容。安装时要小心!
创建新的共享网站
在遵循上述设置步骤之后,您将应该能够创建一个新的共享站点,以便在本地django开发服务器中使用此功能。让我们假设您正在默认端口8000上运行本地开发服务器,并且在http://localhost:8000上有页面。我们希望在http://sharing.localhost:8000 rel="nofollow">http://sharing.localhost:8000上创建一个新的共享站点,在该站点上将公开最新的页面修订版。
要模拟以不同的主机名访问站点,您需要松开django的默认安全设置(仅允许在本地主机上访问)。编辑设置文件(例如 myproject/settings/local.py )以添加以下内容:
ALLOWED_HOSTS=['*']
验证您是否可以访问http://sharing.localhost:8000" rel="nofollow">http://sharing.localhost:8000"上的本地服务器。您应该会看到与http://localhost:8000" rel="nofollow">http://localhost:8000"上相同的内容,因为您尚未为默认站点启用wagtail共享。
为此,在wagtail管理中的"设置,共享站点"下,为默认站点创建一个新的共享站点,其主机名为sharing.localhost ,端口为 8000
您最新的页面修订(包括草稿)现在应该可以在http://sharing.localhost:8000上找到。
横幅
在Wagtail共享网站上查看的网页添加了一个简单的横幅,提醒审阅者当前发布的内容可能与正在查看的内容不同。
可以通过设置 settings.wagtailsharing_banner=false来禁用此行为。横幅模板可以通过在 wagtailsharing/banner.html 提供替代模板文件来覆盖,类似于如何支持 wagtailadmin模板覆盖 。
共享链接
页面的共享url可以通过将其 页面 实例传递到 wagtailsharing.helpers.get_sharing_url 来检索。如果未配置共享站点或指定的页无法路由到共享站点,则此方法返回 none 。
共享页面还将有一个新的下拉菜单选项,可从Wagtail页面资源管理器链接到此共享URL。
挂钩
< Buff行情>与普通的页面服务一样,共享页面的服务继续遵循wagtail内置的 before-serve-page hook.
此项目添加了这些附加挂钩:
在共享页面之前
在页面的最新版本即将提供服务之前调用,就在调用其 serve() 方法之前调用。就像 在服务页面之前一样,这个钩子被传递给页面对象、请求对象以及将被传递给页面的 服务()方法的 参数和 夸格斯。如果callable返回一个 httpresponse ,则该响应将立即返回给用户。
此挂钩可用于将共享限制为仅某些页面类型,或在共享时修改页面内容。
fromwagtail.coreimporthooks@hooks.register('before_serve_shared_page')defmodify_shared_title(page,request,args,kwargs):page.title+=' (Shared)'
服务共享后页面
在调用页的 serve() 方法之后但在将响应返回给用户之前调用。这个钩子传递给page对象和 serve() 返回的响应对象。如果callable返回一个 httpresponse ,则该响应将立即返回给用户。
此钩子可用于直接修改响应内容,例如添加自定义头或更改生成的HTML。此挂钩用于实现上述通知横幅。
fromwagtail.coreimporthooks@hooks.register('after_serve_shared_page')defadd_custom_header(page,response):response['Wagtail-Is-Shared']='1'
兼容性
已测试此项目是否与:
- 巨蟒2.7、3.5、3.6
- Django 1.8-1.11,2.0
- 摇尾1.6-1.13,2.0