2013-02-27 28 views
2

我正在使用django-tinymce。我想知道如何将其嵌入到管理面板的flatpage中。在django flatpage中嵌入tinyMCE

从项目的自述:

添加TinyMCE的到INSTALLED_APPS settings.py中为您的项目:

INSTALLED_APPS = (
    ... 
    'tinymce', 
) 

添加tinymce.urls到的urls.py为您的项目:

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

我的平面网址:

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

有些代码不会伤害,如果你没有告诉我们你尝试过什么,并且你被卡住了,那么很难帮助你... – asermax 2013-02-27 22:44:57

+0

我添加了一些代码 – 2013-02-27 22:47:58

+0

我不清楚什么“添加它在管理面板中的简单页面“的意思。你想在管理页面添加tinyMCE,以编辑某个模型的字段?或者你真的想在你网站的其他地方的django flatpage中使用它? – Mariano 2013-02-27 23:12:43

回答

12

您需要覆盖内容字段的小部件。要做到这一点:

  1. 延长FlatpageForm的ModelForm为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 

然后注销旧的简单页面管理员和重新注册新的

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

我改变'从content.widgets导入TinyMCE'从'tinymce.widgets导入TinyMCE'内容应用程序的小部件是一个自定义的部件,我用在我的项目中,只是忽略它,并使用tinymce打包一个 – 2013-03-04 14:37:01

+1

上述文件将放在哪里? '项目/工程/ admin.py'? – nhinkle 2013-11-10 09:06:06

+2

您可以将它添加到项目中任何位置的任何admin.py - 但我更愿意将代码分隔得比这更好一点。创建一个覆盖/扩展flatpages的应用程序。我在我的'content/admin.py'中调用我的app'content',然后添加上面的代码。 – 2013-11-10 17:35:56