1

オリジンの問題により、TinyMCE js ファイルを S3 バケットに保存できないため、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'

urls.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 から静的アセットを直接提供できます。

settings.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'

urls.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

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 に答える