簡體   English   中英

django MEDIA_ROOT和MEDIA_URL TEMPLATES

[英]django MEDIA_ROOT and MEDIA_URL TEMPLATES

模型看起來像

class Cars(models.Model):
    name = models.CharFidle(max_length=255)
    price = models.DecimalField(max_digits=5,decimal_places=2)
    photo = models.ImageField(upload_to='images/cars')
    def __unicode__(self):
        return self.name

設置

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

但是當我在這樣的模板中使用它時

{% for car in cars %}
        <li>{{ car.name }}</li>
        <li>{{ car.price }}</li>
        <a>{{ car.photo }}</a>
        <img src="{{ car.photo.url }}"/>
    {% endfor %}

我無法獲取圖像,怎么了?

任何人幫助我都太好了

這里可能會發生一些事情:

  1. 您正在運行的非開發Web服務器尚未設置為提供靜態媒體。 這里的解決方案將根據您正在運行的Web服務器而有所不同。
  2. 您正在運行開發Web服務器,但尚未設置靜態服務 為此,我將以下內容添加到您的根urls.py文件中:
  urlpatterns = [ # ... the rest of your URLconf goes here ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
  1. 您的MEDIA_ROOT目錄中存在權限問題。 在這種情況下,我將確保您的MEDIA_ROOT目錄可被您的Web服務器讀取。

從您的settings.py中,我假設您已經在基本目錄中創建了一個媒體文件夾。 如果你有,那你就對了。 我認為問題出在您的模板中。

嘗試這個:

<img src="/static/{{car.photo}}" width="100" height="100" />

擴展基礎之后,不要忘記在模板頂部包含{% load staticfiles %} 。您可以開始...

urlpatterns = [
  # ... the rest of your URLconf goes here ..
  ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

將此添加到我的根urls.py中,並記住根urls.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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