跳转到主要内容

使用Wagtail实现的类似WordPress的博客应用程序

项目描述

Wagtail Blog

pipeline status

使用Wagtail实现的类似WordPress的博客应用程序。

这是什么

在反复用Wagtail实现类似WordPress的博客后,我决定直接创建这个。您可以自由使用或将其作为起点进行复制。它基于Wagtail演示博客,但更接近标准的WordPress博客风格。

这是基于Wagtail的博客的起点,尤其是如果您正在从Wordpress迁移。它不是Wordpress,也不是直接替换。您需要添加自己的模板,并提供了起点模板。

特性

  • 分类和标签以及视图
  • RSS
  • 带分页的基本起始模板
  • 评论
  • WordPress导入器

安装

您应该从现有的wagtail django项目开始,并在开始之前对Wagtail有基本的了解。请参阅 http://docs.wagtail.io

与Wagtail 2.x和Django 2.2进行了测试。

  1. pip安装wagtail博客
  2. blog 添加到 INSTALLED_APPS
  3. 将以下代码添加到urls.py中:url(r'^blog/', include('blog.urls', namespace="blog"))
  4. 运行python manage.py migrate
  5. 根据需要覆盖模板

扩展

Wagtail博客功能包含抽象基模型。如果您想更改功能,可以从此扩展blog.abstract中的模型,并按需使用。如果您这样做,请勿将blog添加到您的INSTALLED_APPS中。您需要创建自己的逻辑来收集上下文变量。请参见blog/models.py中的示例。Wagtail博客不支持“直接使用”博客应用程序并仅对模型进行少量更改的方式。

设置

  • BLOG_PAGINATION_PER_PAGE(默认为10)设置为每页博客的数量。设置为None以禁用(如果您使用自己的分页实现,这很有用)。
  • BLOG_LIMIT_AUTHOR_CHOICES_GROUP可选设置,根据Django组限制作者字段的选项。否则默认检查用户是否为staff。设置为元组以允许多个组。
  • BLOG_LIMIT_AUTHOR_CHOICES_ADMIN如果限制作者到多个组并希望添加is_staff用户,则设置为true。

从WordPress导入

推荐使用v2 API进行导入。它有一个更干净、更现代的实现,易于按需扩展。v1 API和xml导入使用较旧、维护较少的代码库,保留在此处以防万一它们对任何人有用。

WordPress API v2

此方法与任何合理的现代WordPress实例兼容,无需更改WordPress,也不需要身份验证。它已在wordpress.com和私有托管的WordPress实例上进行测试。

用法

使用Django管理命令import_wordpress并提供您希望添加页面的博客索引页面的slug。例如,如果您创建了一个名为“blog”的博客索引页面并想导入我的个人wordpress.com托管博客,请运行以下命令:

./manage.py import_wordpress blog --url=https://public-api.wordpress.com/wp/v2/sites/davidmburke.com

请注意特殊的wordpress.com URL模式。对于私有WordPress实例,它通常看起来像https://example.com/wp-json/wp/v2

可选参数

  • --convert-images (False) 设置为True以尝试将图像转换为Wagtail Image对象。需要beautifulsoup4
  • --create-users (False) 设置为True以从作者创建新用户。

扩展

请参见wordpress_import.py。此项目无法预测您如何托管图像或实现评论。它旨在根据您的项目需求进行修改。

JSON API导入

旧功能

导入功能需要django-contrib-commentsdjango-comments-xtd

  1. 启用WordPress JSON API
  2. 创建一个博客索引页面并记下标题。假设我的博客索引页面标题是“blog”。
  3. 运行./manage.py wordpress_to_wagtail blog --url=http://myblog.com username password,其中username是具有完全访问API的WordPress用户名。没有这个,您无法访问所有博客帖子。

它通过获取您的帖子json数据并为它们创建Wagtail页面来实现。然后它下载它找到的任何图像并将url替换为您自己的网站而不是外部网站。博客作者将成为Django用户。这是一个复杂的过程,容易出错。您应该计划审查导入代码并修复一些问题。欢迎合并请求以改进此功能。

XML文件导入

旧功能

  1. 通过从WordPress管理页面“工具”部分选择“导出”来创建WordPress XML转储。
  2. 创建一个博客索引页面并记下标题。假设我的博客索引页面标题是“blog”。
  3. 运行./manage.py wordpress_to_wagtail blog --xml=export.xml,其中export.xml是源WordPress站点的XML导出文件。

xml导入器使用lxml库。

此功能已在几个网站的WordPress XML导出上进行测试。像上面的导入过程一样,此过程很复杂,容易出错。

评论

django-comments-xtd评论无需配置即可使用。只需按照此处的说明进行安装即可。自定义xtd评论模板应该就足够了 - 但您当然可以审查此应用程序的模板,您可能想覆盖这些模板。

欢迎贡献其他评论实现。

开发和贡献

包含的docker-compose文件应该使启动和运行变得容易。

  1. 安装docker和docker-compose
  2. docker-compose up
  3. docker-compose run --rm web ./manage.py migrate
  4. docker-compose run --rm web ./manage.py createsuperuser
  5. 登录并创建一个博客索引页,包含博客页面,以查看一个非常基本的实现。

请只在gitlab上提交问题和合并请求。GitHub页面是一个只读镜像。

一个好的合并请求应该有

  • 基于master分支。它应该只包含您自己的更改,而不是合并的更改。
  • 尽可能包含测试。你在修复一个错误吗?添加一个在您的补丁之前会失败、之后会通过的测试。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

wagtail_blog-2.3.5.tar.gz (34.2 kB 查看哈希值)

上传时间

构建分发

wagtail_blog-2.3.5-py3-none-any.whl (44.3 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面