首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-tinymce没有显示格式工具栏

django-tinymce没有显示格式工具栏
EN

Stack Overflow用户
提问于 2015-04-19 07:05:16
回答 1查看 742关注 0票数 6

TL;DR -Tinymce的格式工具栏没有显示。有一行django生成的html似乎令人怀疑,但我不知道为什么它在哪里。这是python3.4和django 1.8。

我做过这件事

settings.py

我使用django-tinymce默认值。

代码语言:javascript
复制
INSTALLED_APPS = (
    ...,
    'django.contrib.staticfiles',
    ...,
    'tinymce',
    ...
)

urls.py

代码语言:javascript
复制
...
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)

models.py

代码语言:javascript
复制
from tinymce.models import HTMLField

class BlogEntry(models.Model):
    ...
    #article_body = HTMLField()
    article_body = models.TextField()

(医生建议使用HTMLField。其他消息来源认为是TextField。到目前为止,结果是一样的。

form.py

代码语言:javascript
复制
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'}),)

模板

代码语言:javascript
复制
{% 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>

我认为,这是我需要做的事情。但是textfield看起来就像一个textfield。

有一件相当奇怪的事情(也是主要的怀疑)是,我看到这个HTML正在被服务:

代码语言:javascript
复制
<!-- 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,如果我配置的不正确,我现在有以下值:

代码语言:javascript
复制
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文档(不是django- tinymce )建议从CDN中获取tinymce。Django-tinymce包装它。有谁知道这样做的好处(除了本地调试之外)?

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 20:28:36

我有同样的问题,同样的配置,您应该在浏览器控制台中阅读。

我得到:

代码语言:javascript
复制
Uncaught TypeError: $ is not a function
(anonymous function) @ init_tinymce.js:18
(anonymous function) @ init_tinymce.js:38

tinymce是为1.41.7制作的

编辑:

我找到了解决我的问题的方法,试着看看它是否适合你,编辑文件init_tinymce.js

代码语言:javascript
复制
# at the begging of the file
-(function ($) {
+$(document).ready(function() {

# at the end
-}(django.jQuery));
+});

此外,您还必须注释TINYMCE_COMPRESSOR = True,或者在setting.py中将其配置为False。

如果启用,TINYMCE_COMPRESSOR将抛出其他js错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29726848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档