通过wordpress.com rest api将wordpress站点同步到django

django-wordpress-rest的Python项目详细描述


https://img.shields.io/badge/django--wordpress--rest-0.1.4-brightgreen.svghttps://img.shields.io/badge/license-MIT-blue.svghttps://circleci.com/gh/observermedia/django-wordpress-rest/tree/master.svg?style=shield&circle-token=d6ff8ea2fbb65de69536e1bacf6ce27fb95a533eDocumentation Status

欢迎来到django wordpress rest!

摘要

django wordpress rest是一个django应用程序,它将wordpress.com站点的内容同步到django站点。

这是使用WordPress.com REST API完成的。 内容数据的单独副本存储在django端,这允许松耦合和可扩展性。

完整的文档可以在Read The Docs上找到。

快速启动

安装模块:

pip install django-wordpress-rest

"wordpress"添加到INSTALLED_APPS设置:

INSTALLED_APPS = (
    # ...
    "wordpress",
    # ...
)

创建将保留同步wordpress内容的数据库表:

$ python manage.py migrate

使用管理命令同步wordpress内容。可以使用/me/sites WordPress API call找到<site_id>。这对于使用cron定期更新内容很有用。

$ python manage.py load_wp_api <site_id>

身份验证

如果要同步私有内容,请使用wordpress提供的说明创建oauth2访问令牌: https://developer.wordpress.com/docs/oauth2/

将此标记添加到djangosettings.py文件中。使用环境变量确保安全:

WP_API_AUTH_TOKEN = os.getenv("WP_API_AUTH_TOKEN")

加载选项

更新网站内容:

# first run gets everything
$ python manage.py load_wp_api <site_id>

# second run gets content modified since previous run
$ python manage.py load_wp_api <site_id>

对网站内容进行全面扫描,根据需要插入和更新:

# first run gets everything
$ python manage.py load_wp_api <site_id>

# second run gets/updates all content again
$ python manage.py load_wp_api <site_id> --full

加载在给定日期之后修改的所有内容:

$ python manage.py load_wp_api <site_id> --modified_after=2015-01-01

只需加载文章,而不是页面、附件或参考数据:

$ python manage.py load_wp_api <site_id> --type=post

加载具有特定状态的帖子(注意,这需要身份验证):

$ python manage.py load_wp_api <site_id> --status=draft

加载前清除本地内容-小心!

$ python manage.py load_wp_api <site_id> --purge --full

webhook

如果您想在更新后立即使用webhook同步文章,请将urls包含到项目的urls.py中,如下所示:

from django.conf.urls import include

urlpatterns = [
    url(r'^wordpress/', include('wordpress.urls'))
]

"after_response"添加到INSTALLED_APPS设置(这允许异步处理):

INSTALLED_APPS = (
    # ...
    "after_response",
    "wordpress",
    # ...
)

webhook在django设置中查找您的<site_id>。因此,将它添加到您的settings.py,并使用环境变量来保证安全:

WP_API_SITE_ID = os.getenv("WP_API_SITE_ID")

最后,从wordpress.com站点提交一个post请求,请求的主体中包含一个ID数据元素,以触发一个post的同步。注意这应该是wordpress的post id,而不是django!

$ curl -X POST --data "ID=123456" http://mydjangosite.com/wordpress/load_post

运行测试

$ pip install detox
$ detox

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

推荐PyPI第三方库


热门话题
安卓在java中加入字符串组以创建复合字符串   java系统甚至不点击“下一步”或“上一步”按钮就将我返回到上一页,而不是进入下一页   java如何在arrayList中获取特定列的不同值   CXF GZIP REST JAVA   Java:使用大量半恒定标志检查优化循环中的循环?   java如何在两个应用程序之间进行会话管理?   java SVG文件使用蜡染(但没有轴线)转换为PNG   使用协议缓冲区和内部数据模型的java   java如何在logtag 安卓中打印和查看字符串的值   javascript如何在NodeJs中应用Java/Spring的分层架构?   java Spring URL在JSP中编码不正确   模式对话框后面的java工具提示   java WSRPC生成日历对象而不是日期   在对象外部无法识别类变量   java将图像从文件读/写到BuffereImage的最快方法?   JavaSpring数据存储库对具有不同Id的子类使用抽象超类   安全在Java 5.0上运行web应用程序服务器有危险吗?