1

由于起源问题无法在我的 S3 存储桶上存储 TinyMCE js 文件,我正试图让 Heroku 为它们提供服务。

这是我迄今为止尝试过的,但没有运气。浏览器 url 看起来不错(http://www.mysite.com/media/js/tiny_mce/tiny_mce.js),但 heroku 没有提供它们并返回 404。

这是我的代码:

设置.py

MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
TINYMCE_JS_URL = MEDIA_URL + 'js/tiny_mce/tiny_mce.js'
TINYMCE_JS_ROOT = MEDIA_ROOT + 'js/tiny_mce'

网址.py

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

3 回答 3

2

我可以使用以下代码直接从 heroku 提供静态资产:

设置.py:

MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
TINYMCE_JS_URL = MEDIA_URL + 'js/tiny_mce/tiny_mce.js'
TINYMCE_JS_ROOT = MEDIA_ROOT + 'js/tiny_mce'

网址.py:

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, }),
)

base.html:

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

<script type="text/javascript">
    tinyMCE.init({
    mode: "textareas",
    theme: "advanced",
    forced_root_block: false,
    force_p_newlines : false,
    force_br_newlines : true,
});
</script>
于 2013-10-16T02:36:10.947 回答
0

好的,它可以使用 github 讨论中的评论https://github.com/aljosa/django-tinymce/pull/15

主要是我改变了 urls.py:

 urlpatterns += patterns('',
       (r'^static/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': '/app/.heroku/python/lib/python2.7/site-packages/tinymce/static/'}))

我有一种感觉,这可以更好地解决,但我没有想法,这行得通

于 2013-10-15T13:39:40.933 回答
0

对于 Django >= 2.0.0,对于MEDIA_URL直接从 heroku 提供服务,您可以使用

from django.urls import include, path, re_path
from django.views.static import serve


urlpatterns = [
...
re_path(r'^media/(?P<path>.*)$', serve,
        kwargs=dict(document_root=settings.MEDIA_ROOT)),
]

请记住,heroku 会在每次部署时删除 MEDIA_ROOT 文件夹。

更多信息 https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted

于 2018-12-29T20:23:15.407 回答