通过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 trycatch NullPointerException错误   java在安卓 studio中使用Eclipse类?   java Python在Android上的限制是什么?   java无法找到或加载主类com。太阳工具。javac。主hadoop mapreduce   json Java jersey客户端使用JsonArray的JsonArray   Java Swing GUI隐藏输入   java readobject方法引发ClassNotFoundException   java Transactional不会在Spring引导中使用数据JPA回滚已检查的异常   java如何返回通用枚举的枚举元素列表?   java中一种多线程负载平衡线程池   java运行。bat将无法正确打开命令提示符   java为什么C++给了你拥有非新分配对象的选项?   java Weka未找到主类错误   java SSL检查绕过SSLSocketFactory   Java8函数组合和