Django不识别媒体URL路径?

2024-06-11 15:15:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着在一个简单的view函数上运行tiny mce,但是到这个小的_mce.js文件的路径被搞砸了。文件位于/Users/home/Django/tiny mce/media/js/tiny_mce/tiny_mce.js。我相信/media/js/tiny_mce/tiny_mce.js是正确的,因为开发服务器无法访问Django项目文件夹根目录以上的文件。在呈现的页面中,它在调试器中表示找不到javascript文件。这是因为它试图查看/js/tiny_mce/tiny_mce.js而不寻址路径名的/media/part。

无论如何,这是名为“simple.html”的模板中javascript的脚本片段。<script type="text/javascript" src="{{ MEDIA_URL }}/js/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "simple" }); </script>

这就是我的设置的关键部分。

MEDIA_ROOT = os.path.join(_base, 'media')
MEDIA_URL = 'http://127.0.0.1:8000/media/'
ADMIN_MEDIA_PREFIX = '/media/'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'tinymce',
)

Tags: 文件djangotexturltypejsscriptjavascript
3条回答

看起来您正在使用调试服务器(您的url是http://127.0.0.1:8000/...)。你在urls.py中安装了静态服务了吗?

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

“显示索引”:真选项使浏览媒体成为可能。去你的媒体根http://127.0.0.1:8000/media/看看有什么东西

您可以像其他人建议的那样手动将其传递给模板,或者确保使用的是RequestContext而不是纯上下文。RequestContext将自动用某些变量填充上下文,包括媒体URL和其他与媒体相关的变量。

文档示例:

def some_view(request):
    # ...
    return render_to_response('my_template.html',
                              my_data_dictionary,
                              context_instance=RequestContext(request))

看起来ars已经回答了你真正的问题……但是你会遇到另一个问题:MEDIA_URL必须与ADMIN_MEDIA_PREFIX不同。否则,ADMIN_MEDIA_PREFIX将优先。我通常通过将ADMIN_MEDIA_PREFIX更改为/admin-media/来解决这个问题。

相关问题 更多 >