Django动力网站的复杂博客引擎
项目描述
django-articles 是一个强大、可插拔的博客应用程序,适用于 Django 动力的网站。它也是 http://www.codekoala.com/ 以及其他一些很酷的网站的动力。
功能
文章标签,带标签云模板标签
Django管理后台中的标签自动完成
自动标签:当文章内容中存在时,将现有标签分配给文章
未来发布功能
文章过期功能
来自电子邮件的文章
文章附件
文章状态 – 默认有“草稿”和“完成”状态
允许以纯文本/HTML或使用Markdown、ReStructured Text或Textile标记编写文章
相关文章
后续文章
Disqus评论
带分页的文章存档
国际化就绪
检测文章中的链接并为您创建每个文章的索引
单词计数
最新文章的RSS订阅源
按标签分类的最新文章的RSS订阅源
South迁移
要求
django-articles 需要Django的现代版本 – 1.1之后的版本。它曾经依赖于 django.contrib.comments 来满足评论需求,但最近我切换到了 Disqus。包含将 django.contrib.comments 评论转换为Disqus的管理命令。
本项目还期望正确安装 django.contrib.sites、django.contrib.admin、django.contrib.markup、django.contrib.auth、django.contrib.humanize 和 django.contrib.syndication。
如果您计划使用架构迁移,则需要安装 South。
安装
使用以下任一方法下载 django-articles
从 Mercurial 检出
使用以下命令之一
hg clone http://bitbucket.org/codekoala/django-articles/ hg clone http://django-articles.googlecode.com/hg/ django-articles
从 GitHub 检出
使用以下命令
git clone http://github.com/codekoala/django-articles.git
CheeseShop
使用以下命令之一
pip install django-articles easy_install django-articles
配置
首先,您必须将此项目添加到 settings.py 中的 INSTALLED_APPS 列表中
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.markup', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.syndication', ... 'articles', 'south', ... )
运行 python manage.py syncdb。这将在您的数据库中创建几个必要的表。如果您选择使用 South,则可能需要运行 python manage.py migrate articles。
接下来,在您的 settings.py 中设置一些配置
DISQUS_USER_API_KEY:您的 Disqus 用户 API 密钥。这是免费的,您可以从 Disqus API 页面 或在登录 Disqus 时尝试 http://disqus.com/api/get_my_key/ 获取。只有当您要将 django.contrib.comments 的评论转换为 Disqus 时才需要此密钥。
DISQUS_FORUM_SHORTNAME:您的 Disqus 网站的名称。这是用于链接评论到您网站的名称。
不经常更改的设置
ARTICLES_TEASER_LIMIT:摘要中显示的单词数。默认为 75。
ARTICLES_AUTO_TAG:是否自动标记文章。默认为 True。
ARTICLES_DEFAULT_DB:存储文章的数据库。默认为 default。
ARTICLES_LOOKUP_LINK_TITLE:是否获取远程链接的标题或使用链接的本地名称。默认为 True。
同时,请确保您在 TEMPLATE_CONTEXT_PROCESSORS 元组中具有以下上下文处理器
django.contrib.auth.context_processors.auth
django.core.context_processors.i18n
django.core.context_processors.media
django.core.context_processors.request
如果您想指定 django-articles 使用的默认数据库,可以指定 ARTICLES_DEFAULT_DB 设置。默认为 default。
模板集成
django-articles 期望您的 base.html 文件包含以下模板块
title
meta-keywords
meta-description
extra-head
content
footer
标签自动补全
如果您想利用标签自动补全功能,请将 articles/media 目录中的文件复制到您的静态媒体目录中。 django-articles 期望在您的 settings.MEDIA_URL 目录中找到这些目录/文件。如果这不符合您的需求,您可以覆盖 articles.forms.ArticleAdminForm 的 Media 类以使用适当的路径。
此功能还假设您在 ROOT_URLCONF 中为 django-articles 分配的前缀将是 ^blog/。例如
url(r'^blog', include('articles.urls')),
如果这与您的安装不匹配,您只需要更改 js/tag_autocomplete.js 以反映正确的路径。
完成这些操作后,您应该可以开始使用 django-articles 了!
来自电子邮件的文章
我一直在努力使 django-articles 能够将您发送到特定邮箱的文章发布出来。目前这个功能在最基本层面上似乎是可以工作的。它还没有在许多场景中进行测试,如果您在使用过程中遇到任何问题,请在 http://bitbucket.org/codekoala/django-articles/ 的票据跟踪器中发布问题,以便我们可以使其工作得更好。
需要注意的事项
任何 活跃的 用户,只要他们是 django.contrib.auth.models.User,并且与他们的用户信息相关联有电子邮件地址,就可以作为来自电子邮件文章的有效发送者。这就是确定文章作者的方式。
目前只有以下字段由来自电子邮件的文章功能填充
作者
title
别名(唯一性由系统处理)
content
标记
发布日期
是否活跃
关于文章的任何其他属性都必须稍后通过标准机制(即 Django 管理员)进行配置。
有一个新的管理命令来处理此功能的所有魔法: check_for_articles_from_email。此命令可以手动调用或通过外部调度工具(如 cron)调用。
在将电子邮件消息转换为文章后,将删除这些消息。这意味着您可能需要一个 专门用于 django-articles 和来自电子邮件文章的特殊邮箱。但是,只有发送者与活跃用户的电子邮件地址匹配的电子邮件将被删除(如上所述)。
目前不会处理附件。别担心,将来会处理。 :D
配置
您可以在 settings.py 中配置一些新变量以启用来自电子邮件的文章,指定一个 ARTICLES_FROM_EMAIL 字典
协议 - 无论是 IMAP4 还是 POP3。 默认值: IMAP4
主机 - 邮件服务器。 示例: mail.yourserver.com
端口 - 连接到您的邮件服务器要使用的端口
密钥文件 - 用于访问您的邮件服务器的密钥文件。仅在 ssl 为 True 时使用,即使是这种情况,也是可选的。 未测试
证书文件 - 用于访问您的邮件服务器的证书文件。仅在 ssl 为 True 时使用,即使是这种情况,也是可选的。 未测试
用户 - 用于访问您的邮箱的用户名
密码 - 与访问您的邮箱的用户关联的密码
ssl - 是否使用 SSL 连接到邮件服务器。 默认值: False
自动发布 - 是否自动发布从电子邮件消息创建的文章。如果此为 False,则文章将被标记为不活跃,您必须手动将其设置为活跃。 默认值: False
标记 - 用于来自电子邮件文章的默认标记语言。选项包括
h 用于 HTML/纯文本
m 用于 Markdown
r 用于 reStructuredText
t 用于 Textile
默认: h
acknowledge - 是否在从电子邮件创建文章时发送确认消息。 默认: False
示例配置
ARTICLES_FROM_EMAIL = { 'protocol': 'IMAP4', 'host': 'mail.yourserver.com', 'port': 9000, 'keyfile': '/path/to/keyfile', 'certfile': '/path/to/certfile', 'user': 'your_username', 'password': 'your_password', 'ssl': True, 'autopost': True, 'markup': 'r', 'acknowledge': True, }
文章附件
现在您可以为文章附加文件,并在网站上与文章一起包含它们。您可以在使用 Django 管理员编写文章时创建附件。如果您想的话,也可以将文件附加到发送到特殊邮箱(如上所述)的电子邮件中。
文章状态
从 1.9.6 版本开始,您在保存文章时可以指定文章的状态。这允许您开始编写文章,保存它,然后稍后再回来完成它。在过去,这种行为是通过不设置文章的发布日期来处理的。然而,保存未完成的文章并以非活动状态保存允许超级用户像查看活动文章一样查看网站上的文章。在未来,我计划允许作者查看他们文章的非活动版本。
文章的默认状态始终是具有最低 ordering 值的文章状态对象。这包括负整数。如果您希望所有文章默认都是 Finished,请更新该对象的 ordering 以使其小于 Draft 对象的 ordering 值(以及/或您创建的其他任何对象)。
自动标记
自动标记功能允许您轻松地将任何当前标记应用于文章。当您为启用了该文章自动标记功能的文章对象保存文章时,django-articles 将遍历您现有的每个标签,以查看整个单词是否出现在文章内容中的任何位置。如果找到匹配项,则将该标签添加到文章中。
例如,如果您有标签 test 和 art,并且您编写了一个新的自动标记文章,其文本为
This is a test article.
django-articles 会自动将 test 标签应用于这篇文章,但不会应用 art 标签。只有当实际单词 “art” 出现在内容中时,它才会自动应用 art 标签。
自动标记不会删除已分配给文章的任何标签。这意味着您仍然可以像在 Django 管理员中以传统方式添加标签一样添加它们,而不会丢失它们。自动标记将仅在需要时添加到文章的现有标签中。
默认情况下为所有文章启用了自动标记。如果您想默认禁用它(并按文章启用它),请将您的 settings.py 文件中的 ARTICLES_AUTO_TAG 设置为 False。
自动标记 不会 尝试生成任何代表您文章内容的神奇关键词。仅使用 现有 标签!!
帮助 & 贡献
祝你好运!请与我联系,告诉我您对项目有任何疑问或担忧!如果您有兴趣报告错误或功能请求,官方票据跟踪器位于 http://bitbucket.org/codekoala/django-articles/