[英]Django not recognizing the MEDIA_URL path?
所以我试图在一个简单的视图函数上启动并运行TinyMCE,但是tiny_mce.js文件的路径被搞砸了。 该文件位于/Users/home/Django/tinyMCE/media/js/tiny_mce/tiny_mce.js。 我相信/media/js/tiny_mce/tiny_mce.js是正确的,因为开发服务器无权访问Django项目文件夹根目录之上的文件。 在呈现的页面中,它在调试器中说没有找到javascript文件。 这是因为它试图查看/js/tiny_mce/tiny_mce.js而不寻址路径名的/ media /部分。
无论如何,这是名为'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',
)
看起来你正在使用调试服务器(你的网址是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}),
)
'show_indexes':True选项可以浏览您的媒体。 转到您的媒体根http://127.0.0.1:8000/media/ ,看看它有什么
您可以像其他人建议的那样手动将其传递给模板,也可以确保使用的是RequestContext而不是普通的Context。 RequestContext将使用某些变量(包括MEDIA_URL和其他与媒体相关的变量)自动填充上下文。
来自docs的示例:
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/
来解决此问题。
您的设置中是否有媒体上下文处理器?
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.media',
)
您也可以尝试在设置中添加以下内容,以查看调试消息是否显示任何内容:
TEMPLATE_DEBUG = True
请仔细阅读官方Django DOC,你会找到最合适的答案。
解决这个问题的最好和最简单的方法如下。
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
相关网址为: https : //docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user
非常感谢大家的帮助。 我能够解决它
settings.py - >
MEDIA_ROOT = '/home/patrick/Documents/code/projects/test/media/'
MEDIA_URL = 'http://localhost:8000/media/'
urls.py - >
(r'^media/(?P<path>,*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
index.html - >
img src="/media/images/logo.jpg"
再次,非常感谢,我疯狂地试图找出如何做到这一切。 这个解决方案适用于运行Ubuntu 10.04的Django 1.2.5版开发服务器。
我有一个类似的问题,我有一个单页应用程序,显然我有一个新手的错误,让django错过了我的媒体路径,我有这个:
url(r'^', home, name="home"),
而不是这个:
url(r'^$', home, name="home"),
丢失的$
使我的网址模式错过了我的媒体网址
我也遇到了同样的问题,这就是我完成它的方法。
如果在模型类中使用FileField而不是MEDIA_URL,请使用.url成员来访问文件的URL。 例如:像这样的东西
href = "{{ some_object.file_name.url }}"
这里的file_name是模型类中的FileField。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.