2010-01-11 155 views
8

所以我試圖讓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 /部分。Django無法識別MEDIA_URL路徑?

無論如何,這裏是一個名爲'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', 
) 
+0

您是否確定您在該模板的上下文中傳遞了'MEDIA_URL'? – ayaz 2010-01-11 04:24:43

+0

我以前沒有,但現在我是。儘管如此,仍然出現「缺頁」錯誤。 – RaDeuX 2010-01-11 07:03:11

+0

我有一種感覺,我可能已經損壞了Django模塊,當我通過fink爲Python2.5安裝了一些額外的東西。我正在重新安裝Django,看看它是否能做到。 – RaDeuX 2010-01-11 16:59:08

回答

13

您可以將它傳遞給模板手動正如其他人建議或保證你正在使用RequestContext而不是簡單的上下文。 RequestContext將自動使用某些變量(包括MEDIA_URL和其他與媒體相關的變量)來填充上下文。從文檔

例子:

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

這解決了路徑名的問題。但是,JavaScript沒有正確加載,所以我一定還在做其他的錯誤。 – RaDeuX 2010-01-11 05:13:14

6

您在設置中是否有媒體上下文處理器?

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media', 
) 

您也可以嘗試把你的設置,下面來看看調試消息透露任何東西:

TEMPLATE_DEBUG = True 
+0

我確實有調試模式,但沒有錯誤。所有這一切都是JavaScript文件不加載。 – RaDeuX 2010-01-11 05:15:22

+0

現在我仔細觀察,即使修改了路徑名,它仍然無法加載。

3

非常感謝你的幫助大家。我可以把它作爲解決

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開發服務器。

4

請仔細閱讀官方的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

0

我也有類似的問題, 我有一個單頁的應用程序,顯然我有一個新手的錯誤,作出的Django想念我的媒體路徑我有這樣的:

url(r'^', home, name="home"), 

,而不是這樣的:

url(r'^$', home, name="home"), 

失蹤$使我的網址格局錯過我的媒體網址

0

我也遇到了同樣的問題,這就是我如何完成它。

如果您在模型類中使用FileField而不是MEDIA_URL,請使用.url成員來訪問文件的url。 對於如:這樣的事情

href = "{{ some_object.file_name.url }}" 

這裏file_name是的FileField模型類。