【问题标题】:Adding django-pagedown to Django 1.5 Blog Comments将 django-pagedown 添加到 Django 1.5 博客评论
【发布时间】:2013-08-14 08:02:33
【问题描述】:

我想将django-pagedown 添加到我网站的博客。我有一个站点和一个名为 blog 的应用程序,使用 Django 构建,并且我已经实现了内置 cmets。这些工作正常,但我现在正试图让django-pagedown 在 cmets 中工作。例如,如果用户对我的一篇文章进行评论,我希望能够支持 markdown,以便用户可以使用代码 sn-ps 或格式进行评论,而无需使用 HTML(我可能不想支持)。

我用 pip 成功安装了 django-pagedown:

pip install django-pagedown

我将它添加到settings.pyINSTALLED_APPS 部分并收集静态文件:

INSTALLED_APPS = (
    ...
    'pagedown',
    ...
)

python manage.py collectstatic

发生了一些事情,因为当我将此代码添加到我的 blog/admin.py 文件时,管理员发布预览窗口出现了:

...
from pagedown.widgets import PagedownWidget, AdminPagedownWidget
from django.db import models
....

class PostAdmin(admin.ModelAdmin):
    ...
    formfield_overrides = {
        models.TextField: {'widget': AdminPagedownWidget },
    }
    ...

由于我对 Django 还不是很熟悉,文档位于:

https://github.com/timmyomahony/django-pagedown

不足以让我完全理解它是如何实现的。基本上,我想将此功能添加到博客中的用户 cmets 部分。

我希望能够在不制作自定义表单并仅使用 Django 中的内置 cmets 的情况下完成此操作。这可能吗?

我能够完成这项工作,但最终还是选择了Disqus,因为它具有强大的功能并且易于设置和调节。

【问题讨论】:

标签: django blogs django-comments pagedown


【解决方案1】:

首先,仔细考虑你是否真的要使用django.contrib.comments;它在 1.6 版中已被弃用,此后将不再受支持。请参阅讨论here

如果您确实想使用它,您将不得不自定义 cmets 应用程序。 documentation 列出了您需要做的事情。在您的 forms.py 中,您将拥有如下内容:

from pagedown.widgets import PagedownWidget
from django.contrib.comments.forms import CommentForm
from django.forms import CharField

class PagedownCommentForm(CommentForm):
    comment = CharField(widget=PagedownWidget())        

您还需要在新应用的__init__.py 中添加一个get_form() 函数,并进行文档中描述的其他更改。

希望这能让您了解如何进行。

【讨论】:

  • 感谢您的回答。我没有任何运气就围绕着你所指出的跳舞。实际上,我在您建议的文档链接上花了很多时间...我有与您已经提到的类似的代码,但没有包含它,因为我认为我走错了路(我想要一个公正的答案))。我将编辑我的答案并重试您引用的内容。也非常感谢django.contrib.comments 的提醒。
  • 感谢您的回答。
  • 乐于助人。每当我尝试自定义管理员、ModelForms 和 Inlines 等时,都需要反复试验并深入研究源代码。但最终它起作用了......
猜你喜欢
  • 2015-12-10
  • 2021-04-16
  • 2013-11-21
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多