2011-04-03 57 views
0

我想在django中創建我的第一個網站,並且遇到問題。我正在嘗試提供圖片,但它無法正常工作。我把它以下列方式設置:
在settings.py:在Django中提供圖片的問題

MEDIA_ROOT = 'C:/Users/John/Documents/My Dropbox/Infostuff/filmsite/media/' 
MEDIA_URL = 'localhost:8000/static/' 
ADMIN_MEDIA_PREFIX = '/admin-media/' 

在urls.py:

(r'^static/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': settings.MEDIA_ROOT}), 

它看起來像這樣的模板頁面:

<img src="{{MEDIA_URL}}{{a.picture.url}}"> 

它解析爲:

<img src="localhost:8000/static/portrets/0000138_Leonardo_D.jpg"> 

當我打開html頁面時,它不顯示圖片(我得到了破碎的圖片圖標)。如果我然而去查看源代碼並複製上面的url並將其直接複製到我的瀏覽器中,那麼確實需要加載圖片。我究竟做錯了什麼?

我正在使用Django 1.2。我還沒有使用Apache,因爲我首先想讓它在開發環境中工作。 PS:這是我第一次在這個網站上提問,如果我做錯了,請告訴。

+1

請發佈生成的源代碼,這沒有任何意義。 – 2011-04-03 21:16:33

+0

請注意:Django的作者建議,這不是提供圖片的最佳選擇。你有沒有考慮過使用Apache? – cwallenpoole 2011-04-03 21:17:26

+0

@cwallenpoole可以將這種方法用於開發目的。對於轉移到製作,我同意使用nginx或其他前端靜態媒體服務器是首選。 – 2011-04-03 21:59:09

回答

0

使用:

MEDIA_URL = 'http://localhost:8000/static/' 

MEDIA_URL = '/static/' 
+0

是的,我自己想出來了,但還是謝謝。 – John 2011-04-03 21:49:26

0

你使用的是什麼版本的Django?

你能發佈生成的HTML代碼嗎?如果在您複製並粘貼到瀏覽器中時該URL起作用,那麼也可能是html問題。

你看過這個頁面嗎?

http://docs.djangoproject.com/en/dev/howto/static-files/

更新:

你能後的模型?是一個圖片字段?如果是這樣,那麼你不需要把MEDIA_URL放在你的img src中,因爲它已經是一個絕對的URL了,它應該已經包含了MEDIA_URL。嘗試刪除它,看看它是否工作。

<img src='{{a.picture.url}}' /> 

欲瞭解更多信息,請參閱此頁。

http://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.FileField.storage

+0

我有。據我所知,我已經遵循該網站的每一步。我也在本網站上查看了與此相關的其他一些問題。有趣的是,當我在查看源代碼時(我使用的是Google Chrome),我可以點擊生成的鏈接並進入空白頁面,但是如果我手動複製鏈接並將其粘貼到地址中它確實會加載圖片。 – John 2011-04-03 21:39:18

+0

看起來像有人毆打我的答案。 – 2011-04-03 22:06:10

0

MEDIA_URL應該只是'/static/' - 或者,如果你一定要,'http://localhost:8000/static/'。否則,您的瀏覽器會將localhost解釋爲路徑的一部分,而不是域。

0

好吧,我覺得很愚蠢...... 我不得不改變

MEDIA_URL = 'localhost:8000/static/' 

MEDIA_URL = 'http://localhost:8000/static/' 

,然後我不得不改變

<img src="{{MEDIA_URL}}{{a.picture.url}}"> 

<img src="{{a.picture.url}}"> 

謝謝您的時間。