使用Wagtail实现的类似WordPress的博客应用程序
项目描述
Wagtail Blog
使用Wagtail实现的类似WordPress的博客应用程序。
这是什么
在反复用Wagtail实现类似WordPress的博客后,我决定直接创建这个。您可以自由使用或将其作为起点进行复制。它基于Wagtail演示博客,但更接近标准的WordPress博客风格。
这是基于Wagtail的博客的起点,尤其是如果您正在从Wordpress迁移。它不是Wordpress,也不是直接替换。您需要添加自己的模板,并提供了起点模板。
特性
- 分类和标签以及视图
- RSS
- 带分页的基本起始模板
- 评论
- WordPress导入器
安装
您应该从现有的wagtail django项目开始,并在开始之前对Wagtail有基本的了解。请参阅 http://docs.wagtail.io
与Wagtail 2.x和Django 2.2进行了测试。
pip安装wagtail博客
- 将
blog
添加到 INSTALLED_APPS - 将以下代码添加到urls.py中:
url(r'^blog/', include('blog.urls', namespace="blog"))
运行
python manage.py migrate
- 根据需要覆盖模板。
扩展
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-comments
和django-comments-xtd
。
- 启用WordPress JSON API
- 创建一个博客索引页面并记下标题。假设我的博客索引页面标题是“blog”。
- 运行
./manage.py wordpress_to_wagtail blog --url=http://myblog.com username password
,其中username是具有完全访问API的WordPress用户名。没有这个,您无法访问所有博客帖子。
它通过获取您的帖子json数据并为它们创建Wagtail页面来实现。然后它下载它找到的任何图像并将url替换为您自己的网站而不是外部网站。博客作者将成为Django用户。这是一个复杂的过程,容易出错。您应该计划审查导入代码并修复一些问题。欢迎合并请求以改进此功能。
XML文件导入
旧功能
- 通过从WordPress管理页面“工具”部分选择“导出”来创建WordPress XML转储。
- 创建一个博客索引页面并记下标题。假设我的博客索引页面标题是“blog”。
- 运行
./manage.py wordpress_to_wagtail blog --xml=export.xml
,其中export.xml是源WordPress站点的XML导出文件。
xml导入器使用lxml库。
此功能已在几个网站的WordPress XML导出上进行测试。像上面的导入过程一样,此过程很复杂,容易出错。
评论
django-comments-xtd评论无需配置即可使用。只需按照此处的说明进行安装即可。自定义xtd评论模板应该就足够了 - 但您当然可以审查此应用程序的模板,您可能想覆盖这些模板。
欢迎贡献其他评论实现。
开发和贡献
包含的docker-compose文件应该使启动和运行变得容易。
- 安装docker和docker-compose
docker-compose up
docker-compose run --rm web ./manage.py migrate
docker-compose run --rm web ./manage.py createsuperuser
- 登录并创建一个博客索引页,包含博客页面,以查看一个非常基本的实现。
请只在gitlab上提交问题和合并请求。GitHub页面是一个只读镜像。
一个好的合并请求应该有
- 基于master分支。它应该只包含您自己的更改,而不是合并的更改。
- 尽可能包含测试。你在修复一个错误吗?添加一个在您的补丁之前会失败、之后会通过的测试。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
wagtail_blog-2.3.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f87384fa87c9e2f0474a6f6ef4457c82027860414f9b90018bbb20e1f9715bb2 |
|
MD5 | 46121007ad11f779e0dfbc3d69f671a7 |
|
BLAKE2b-256 | a1d809efa288963fb80591c3fdb08d724aadbd514cee519d533981db5244e3dc |
wagtail_blog-2.3.5-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d3d7de2846ebc8ece992e8276bbacfb1f64973210caba1aadb59d823d3b1587c |
|
MD5 | 28c22a9549a45d4cdee023e7cb26d72a |
|
BLAKE2b-256 | 78efed45177233dd861161fa3b484e2250dbe60bac1bfb5f0e146349a1bc7b3a |