TL; DR - Tinymce的格式工具栏不显示。 django生成的一行html似乎很可疑,但我不确定它为何就是这样。这是python 3.4和django 1.8。
我做到了这一点:
我正在使用django-tinymce默认值。
INSTALLED_APPS = (
...,
'django.contrib.staticfiles',
...,
'tinymce',
...
)
...
url(r'^tinymce/', include('tinymce.urls'))
...
if settings.DEBUG:
urlpatterns += patterns('django.views.static',
(r'^media/(?P<path>.*)',
'serve',
{'document_root': settings.MEDIA_ROOT}),)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from tinymce.models import HTMLField
class BlogEntry(models.Model):
...
#article_body = HTMLField()
article_body = models.TextField()
(文档建议HTMLField。其他来源建议使用TextField。到目前为止,结果是相同的。)
from tinymce.widgets import TinyMCE
class BlogEntryForm(forms.ModelForm)
article_body = forms.CharField(
widget=TinyMCE(#mce_attrs={
#'plugin_preview_pageurl': reverse('tinymce-preview', "blog")},
attrs={
'cols': 80, 'rows': 30,
'placeholder': 'contenu',
'class': 'lkz-input'}),)
{% extends "kernel/base.html" %}
{% block extra_head %}
<!-- before media -->
{{ entry.media }}
<!-- after media -->
<script type="text/javascript" src="{% url "tinymce-js" "tinymce" %}"></script>
<!-- end -->
{% endblock extra_head %}
{% block content %}
<form method="post" action="">
{% csrf_token %}
...
{{ entry.article_body.errors }}
<label for="{{ entry.article_body.id_for_label }}" ></label> {{ entry.article_body }}<br>
...
</form>
我认为,这是我需要做的一系列事情。但是文本域看起来就像是一个文本域。
一个相当奇怪的事情(和主要嫌疑人)是我看到这个HTML服务:
<!-- before media -->
<script type="text/javascript" src="/static/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="/static/django_tinymce/init_tinymce.js"></script>
<script type="text/javascript" src="/static/{% media %}/tiny_mce/tinymce.min.js"></script>
<!-- after media -->
<script type="text/javascript" src="/tinymce/js/textareas/tinymce/"></script>
<!-- end -->
第3行中的/static/{% media %}/
显然是错误的,但我看不出它来自哪里。我找到的最接近的源是tinymce/settings.py
,它不是逐字相同的(没有'min')。
Fwiw,如果我错误地配置了这个,我目前有这些值:
STATIC_PATH = os.path.join(BASE_DIR,'static')
STATIC_ROOT = ''
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
tinymce docs(不是django-tinymce)建议从CDN获取tinymce。 Django-tinymce打包它。任何人都知道它的优点是什么(除了本地调试)?
答案 0 :(得分:1)
我遇到与您相同的问题和相同的配置,您应该在浏览器控制台中阅读。
我明白了:
Uncaught TypeError: $ is not a function
(anonymous function) @ init_tinymce.js:18
(anonymous function) @ init_tinymce.js:38
https://github.com/aljosa/django-tinymce/tree/master/tinymce/static/django_tinymce 是为1.4-1.7
修改强>
我找到了解决问题的方法,试着看看它是否适合你, 编辑文件init_tinymce.js
# at the begging of the file
-(function ($) {
+$(document).ready(function() {
# at the end
-}(django.jQuery));
+});
此外,您必须在 setting.py 中评论 TINYMCE_COMPRESSOR = True 或将其配置为False。
如果启用,TINYMCE_COMPRESSOR将抛出其他js错误。