在Django flatpage中嵌入tinyMCE

2 投票
1 回答
2223 浏览
提问于 2025-04-17 17:22

我正在使用 django-tinymce。我想知道如何在管理面板的静态页面中嵌入它。

根据这个项目的说明:

首先,在你的项目的 settings.py 文件中,把 tinymce 加入到 INSTALLED_APPS 里:

INSTALLED_APPS = (
    ...
    'tinymce',
)

然后,在你的项目的 urls.py 文件中,添加 tinymce.urls:

urlpatterns = patterns('',
    ...
    (r'^tinymce/', include('tinymce.urls')),
)

我的静态页面网址是:

url(r'^pages/', include('django.contrib.flatpages.urls')),

1 个回答

13

你需要重写内容字段的组件。要做到这一点:

  1. 扩展一下 FlatpageForm 模型表单,创建一个新的 PageForm
  2. 扩展 FlatPageAdmin,让它使用新的 PageForm

代码示例:

from django.contrib.flatpages.admin import FlatpageForm, FlatPageAdmin
from django.contrib.flatpages.models import FlatPage
## OOPS this is a custom widget that works for initializing
## tinymce instances on stacked and tabular inlines
## for flatpages, just use the tinymce packaged one.
#from content.widgets import TinyMCE 
from tinymce.widgets import TinyMCE


class PageForm(FlatpageForm):

    class Meta:
        model = FlatPage
        widgets = {
            'content' : TinyMCE(attrs={'cols': 100, 'rows': 15}),
        }


class PageAdmin(FlatPageAdmin):
    """
    Page Admin
    """
    form = PageForm

然后取消注册旧的 flatpage 管理器,再注册新的管理器

admin.site.unregister(FlatPage)
admin.site.register(FlatPage, PageAdmin)

撰写回答