Django与tinymce

0 投票
2 回答
612 浏览
提问于 2025-04-17 11:56

我刚开始学习Django,正在参考James Bennett的Django指南。

现在我已经看到第42页了,我需要把tinymce这个工具放进change_form.html里。所以我添加了以下几行代码:

(r'^admin/', include(admin.site.urls)),
(r'^tiny_mce/(?P<path>.*)$', 'django.views.static.serve',
            { 'document_root': 'C:/www/tinymce/jscripts/tiny_mce/' }),
(r'', include('django.contrib.flatpages.urls')),
url(r'^admin/', include(admin.site.urls)),
(r'', include('django.contrib.flatpages.urls')),

这是我的模板定义:

TEMPLATE_DIRS = (
   "C:/www/django/templates"

)

我在我的模板目录里创建了几个文件夹:

C:\www\django\templates\admin\flatpage\flatpages

我把JavaScript代码加到了change_form.html里:

<script type="text/javascript" src="/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
mode: "textareas",
theme: "simple"
});
</script>

但是在我的编辑页面上,还是没有看到任何富文本编辑器的选项。有没有人遇到过这个问题?

2 个回答

1

你确定 tiny_mce.js 这个文件已经加载了吗?可以试着查看一下网页的源代码,找到 tiny_mce.js 的链接。

https://code.djangoproject.com/wiki/AddWYSIWYGEditor

看看第三条。

1

在你运行项目的时候,终端日志里有没有出现 404 错误?这可能是因为 tinymce 的 JavaScript 没有加载成功。

确保你的 urls.py 文件允许加载静态文件和媒体内容。如果这是问题所在,可以尝试下面这种写法:

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$',
         'django.views.static.serve',
         {'document_root': settings.MEDIA_ROOT, 'show_indexes': True, }),
        (r'^static/(?P<path>.*)$',
         'django.views.static.serve',
         {'document_root': settings.STATIC_ROOT, 'show_indexes': True, }),
)

接下来,你可能需要把 <script type="text/javascript" src="/tiny_mce/tiny_mce.js"></script> 改成 <script type="text/javascript" src="{{ STATIC_URL }}/tiny_mce/tiny_mce.js"></script>。你用的书没有考虑到静态文件的处理,因为这是 Django 1.3 之后的新特性。如果你用的是 Django 1.3,那就用静态文件的方式;如果你还是按照书上的内容,使用的是低于 1.3 的版本,那就全用 MEDIA_URL。

关于你用的那本书,我也遇到了一些问题(代码不正确或过时)。这里有一些链接,可以帮助你在学习过程中解决问题。

  1. http://www.gyford.com/phil/writing/2010/01/14/django.php (源代码)
  2. http://blog.haydon.id.au/2008/08/notes-on-practical-django-projects.html (逐章帮助)

撰写回答