2013-03-02 119 views
7

有人可以幫助我這個問題:我有一個Django,項目,秀Django的圖像模板

settings.py中

MEDIA_ROOT = 'C:/Users/hl/workspace/beer/media' 
MEDIA_URL = '/media/' 
STATICFILES_DIRS = (
    'C:/Users/hl/workspace/beer/media' 
) 

和models.py

image1= models.ImageField(upload_to=settings.MEDIA_ROOT) 

and in url.py

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

的意見

def allBeer(request): 
     beers=Beer.objects.all().order_by("name") 
     context={'beers': beers} 
     return render_to_response('AllBeers.html',context,context_instance=RequestContext(request)) 

和HTML

{%for beer in beers %} 
    <p> 
     <a href="/beers/{{beer.slug}}/"> 
      <img scr="{{beer.image1.url}}">{{beer}} 
     </a> 
    </p> 
{% endfor%} 

它有沒有問題加載圖像,但圖像在HTML文件中不會顯示。我從互聯網上搜索和閱讀了很多,但我仍然無法弄清楚。

有誰能告訴我爲什麼?

+3

粗體* bold * ** bold!** – 2013-03-02 15:28:31

回答

6
image1= models.ImageField(upload_to=images) 


from django.conf.urls import patterns, include, url 
from django.conf.urls.static import static 
from django.contrib import admin 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
from project_name import settings 

admin.autodiscover() 
urlpatterns = patterns('', 
    ........... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

urlpatterns += staticfiles_urlpatterns() 


<img src="{{MEDIA_URL}}{{beer.image1}}"> 

settings.py

import os 

PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..') 
SITE_ROOT = PROJECT_ROOT 


MEDIA_ROOT = os.path.join(SITE_ROOT, 'media') 
MEDIA_URL = '/media/' 


STATIC_ROOT = os.path.join(SITE_ROOT, 'static') 
STATIC_URL = '/static/' 


STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    os.path.join(SITE_ROOT, 'staticfiles'), 
) 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(SITE_ROOT, 'templates'), 
) 
+0

仍然不能顯示圖像 {{啤酒}} – hln 2013-03-02 13:58:28

+0

我已經更改爲這些代碼,但沒有任何改變,仍然不能顯示圖像:( – hln 2013-03-02 14:38:32

+0

仍然沒有工作,我可以看到圖像在媒體文件夾 – hln 2013-03-02 14:57:53

2

你在搞圖像的src屬性。它應該只是 -

<img src="{{beer.image1.url}}" /> <!-- from the media url --> 

不要到最後添加任何東西 - 的Django知道是服務於圖像從URL - 這就是在模型上的ImageField一樣。

我不知道,其實有什麼不對您的網址的conf,但在docs建議的模式是 -

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) 
+0

仍不能顯示圖片 {{beer}} :( – hln 2013-03-02 13:59:23

+0

這應該工作,如果你在開發服務器上(即使用'python manage.py runserver')。如果你在運行的服務器上運行它,你將需要檢查你的設置以正確地提供靜態文件 - 這不是由django處理,而是由你安裝的網絡服務器來處理。欲瞭解更多信息 - https://docs.djangoproject.com/en/1.5/howto/static-files/ – 2013-03-02 14:23:03

+0

我使用Django內置服務器。 – hln 2013-03-02 14:26:37