通过wordpress.com rest api将wordpress站点同步到django
django-wordpress-rest的Python项目详细描述
欢迎来到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