首页 > 解决方案 > Django tinyMC 无法在管理面板中加载

问题描述

我对 django-tinymce 有疑问。该模块无法在管理面板中正确加载,也可能以正常形式加载。我曾经python manage.py collectstatic收集静态文件。我正在运行应用程序debug = False。我有 2 个错误:

Failed to load resource: the server responded with a status of 404 (Not Found)
Uncaught ReferenceError: tinyMCE is not defined

您可以在屏幕截图中看到错误。

设置:

INSTALLED_APPS = [
    'tinymce',
    ...
]

...

STATIC_URL = '/static/'
MEDIA_URL = '/media/'

ENV_PATH = os.path.abspath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(ENV_PATH, '../public/static/') 
MEDIA_ROOT = os.path.join(ENV_PATH, '../public/media/') 

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]


TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, "tiny_mce")
TINYMCE_JS_URL = os.path.join(TINYMCE_JS_ROOT, "tiny_mce.js")

TINYMCE_DEFAULT_CONFIG = {
    'height': 360,
    'width': 1120,
    'cleanup_on_startup': True,
    'custom_undo_redo_levels': 20,
    'selector': 'textarea',
    'theme': 'modern',
    'plugins': '''
            textcolor save link image media preview codesample contextmenu
            table code lists fullscreen  insertdatetime  nonbreaking
            contextmenu directionality searchreplace wordcount visualblocks
            visualchars code fullscreen autolink lists  charmap print  hr
            anchor pagebreak
            ''',
    'toolbar1': '''
            fullscreen preview bold italic underline | fontselect,
            fontsizeselect  | forecolor backcolor | alignleft alignright |
            aligncenter alignjustify | indent outdent | bullist numlist table |
            | link image media | codesample |
            ''',
    'toolbar2': '''
            visualblocks visualchars |
            charmap hr pagebreak nonbreaking anchor |  code |
            ''',
    'contextmenu': 'formats | link image',
    'menubar': True,
    'statusbar': True,
}

和网址:

urlpatterns = [
    re_path(r'^tinymce/', include('tinymce.urls')),
    ...
]

编辑

我更新了代码,按照@dirkgroten 编写的说明进行操作,但仍然出现错误这是一个文件夹树settings.py在 pystyle 目录中。

标签: pythondjangotinymce

解决方案


对于所有静态/媒体设置,请记住:

  • ROOT是文件在存储上的物理位置。在这里,您使用诸如os.path.join在文件系统中构建操作系统路径之类的东西。
  • URL是用于通过 Internet 获取资源的 url。这将由您的服务器 (nginx) 处理,该服务器会将其转换为文件的实际位置,以便返回该文件。

所以你TINYMCE_JS_URL错了。它不是磁盘上的路径,而是 URL。它应该是:

TINYMCE_JS_URL = STATIC_URL + "tinymce/tinymce.js"

推荐阅读