0

django 1.4でアップロードパスを設定するためのベストプラクティスは何ですか?私はこのようなモデルを持っています

def upload_image(instance, filename):

    return os.path.join(instance.slug, filename)

class Book(models.Model):
    ...
    ...

    image = models.ImageField(upload_to=upload_image) 

    def admin_image(self):
        return "<img src='%s' />" % self.image

    ....

settings.pyで

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
ROOT_DIR = PROJECT_DIR.rsplit(os.sep, 1)[0]

MEDIA_ROOT = os.path.join(ROOT_DIR, 'books', 'static', 'books')
MEDIA_URL = '/media/'

STATIC_ROOT = ''
STATIC_URL = '/static/'

とadmin.pyはこのように

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'admin_image')

したがって、最終的に、画像は/root-of-project/books/static/books/programming-java/wall.jpgに正しく保存されましたが、データベースに保存されたパスは「programming-java/wall」です。 jpg"と私は画像を表示するたびに接頭辞'/static /books/'を連結する必要があります

4

1 に答える 1

1

テンプレートでこれらの行を連結/ハードコーディングするのはなぜですか?その目的のために静的タグを使用できます

{% load staticfiles %}
<img src="{% static "images/hi.jpg" %}" />

エイリアス

{% load staticfiles %}
<img src="{% static object.image.url %}" />

本当に必要な場合は、モデルにメソッドを追加して、それを実行できますか?

于 2012-06-04T21:19:19.600 に答える