-1

データベース情報から画像ファイルを表示するのに問題があります。ファイル名を直接入力すると問題なく動作しますが、そのままのコードでは壊れた画像が表示されます。画像以外の変数は正常に機能し、画像はファイル名の CharField としてモデルに保存されます (これは最善ではなかったかもしれませんが、変更するには遅すぎる可能性があると思います)。 ?

<div class="product_image" >
        {% load static %} <img src="{% static "images/{{p.image.url}}" %}" alt={{p.name}}/>

(私も {{p.image}} を試しましたが、うまくいきませんでした。)

関連する設定は次のとおりです。メディアと静的についてまだ混乱しています。

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'staticcoll')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__), 'static'),
) 

製品モデル (p) は次のとおりです。

class Product(models.Model):
    name = models.CharField(max_length=255, unique=True)
    price = models.DecimalField(max_digits=9,decimal_places=2)
    old_price = models.DecimalField(max_digits=9,decimal_places=2,
                                    blank=True,default=0.00)
    image = models.CharField(max_length=50, default="imagenotfound.jpeg")
    is_active = models.BooleanField(default=True)
    description = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    categories = models.ManyToManyField(Category)
    store_name = models.ForeignKey(Store, blank = True, null = True)
    class Meta:
        db_table = 'products'
        ordering = ['-created_at']

    def __unicode__(self):
        return self.name
4

2 に答える 2

1

に保存されているファイル名だけなのでp.image.url、これは機能します。

<img src="{{ STATIC_URL }}images/{{p.image}}" alt={{p.name}}/>

あなたは仕事をするcontext = RequestContext(request)ためにあなたの見解を持っている必要があります{{ STATIC_URL }}

ここについて読むことができますRequestContext

于 2013-01-24T18:11:27.490 に答える