簡體   English   中英

Django沒有認識到MEDIA_URL路徑?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM