[英]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.