Django Tinymce没有显示富文本格式

时间:2012-12-28 14:36:40

标签: python django django-tinymce

我想在我的Django项目中使用TinyMCE,在完成所有必要的设置后,当我访问页面时,表单只呈现正常的django表单而不是TinyMCE富文本格式。以下是我的设置。

我将tinymce文件夹复制到媒体文件夹:

   C:/Python27/Scripts/nate/media/js/tiny_mce

Settings.py

  TINYMCE_JS_URL = '/media/js/tiny_mce/tiny_mce.js/'

  TINYMCE_DEFAULT_CONFIG = {
       'plugins': "table,spellchecker,paste,searchreplace",
       'theme': "advanced",
       'cleanup_on_startup': True,
       'custom_undo_redo_levels': 10,

}

  TINYMCE_SPELLCHECKER = True
  TINYMCE_COMPRESSOR = True

urls.py

    (r'^tinymce/', include('tinymce.urls')),

模型

    class Finmall(models.Model):
       user=models.ForeignKey(User)
       name=models.CharField(max_length=250, unique=True)
       content1 = models.TextField()
       content2 = models.TextField()

       def __unicode__(self):
           return self.user

模板

    <head>
     <script type="text/javascript" src="{{ MEDIA_URL }}/js/tiny_mce/tiny_mce.js"></script>
    </script>
    </head>

   {% block content %}

    <div id="postcribbody" class="wrapper">     

     <p class="list">You can make it</p>
      <form enctype="multipart/form-data"  form action="." method="POST">
          {% csrf_token %}
             {{ FinmallForm.as_p }}
  <input type="submit"  class="cribput" value="Submit"/>
      </form>
      </div>
   {% endblock %}

如何让content1和content2显示TinyMCE富文本格式?

3 个答案:

答案 0 :(得分:2)

来自Documentation

的示例
from django import forms
from tinymce.widgets import TinyMCE

class FinmallForm(forms.ModelForm):
    ...
    content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
    ...

    class Meta:
        model = Finmall

答案 1 :(得分:1)

问题是您将表单显示为Django表单。

富编辑文本字段将是Django不会创建的JS事物。 django.form功能将创建一个HTML元素。

我建议手动将丰富的编辑内容添加到模板中。只要你给富队编辑与Django表单元素相同的“名称”,你就可以在返回的POST中使用它。

编辑:您在呈现表单时发布models.TextField()。这将在表单中生成一个元素。此表单只有默认属性。

我不是100%确定TinyMCE是如何工作的,但你需要通过“id”或“name”值将它绑定到该元素,或者只是将表单代码放入模板中。

我自己不使用Django来渲染我在模板中自己创建表单的表单,并为它们提供Django给予它们的相同名称。

查看呈现页面的源代码并查看表单的外观。然后用TinyMCE设置一个测试页面,让它工作,看看元素之间的区别。

:)

答案 2 :(得分:0)

尝试将{{ form.media }}格式,即{{ FinmallForm.media }}放在模板中

    <head>
     <script type="text/javascript" src="{{ MEDIA_URL }}/js/tiny_mce/tiny_mce.js"></script>
    </script>
    </head>

   {% block content %}

    <div id="postcribbody" class="wrapper">     

     <p class="list">You can make it</p>
      {{ FinmallForm.media }}
      <form enctype="multipart/form-data"  form action="." method="POST">
          {% csrf_token %}
             {{ FinmallForm.as_p }}
  <input type="submit"  class="cribput" value="Submit"/>
      </form>
      </div>
   {% endblock %}