2016-12-04 2 views
1

私はユーザーがアップロードした写真のDjangoモデルを持っています。それはImageField.image.urlをカスタマイズします

class Photo(models.Model): 
    image = models.ImageField(upload_to='photo_image_files') 
    @property 
     def name(self): 
      return filename_without_extension 
    ... 

とsettings.pyとして定義されたフィールドが含まれています。これは、画像が/media/photo_image_files/に保存されている意味

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

定義します。 /jpeg/:filenameでJPEGファイルにアクセスして、訪問者からの画像への実際のパスを隠したいと思います。私は対応するビューとURLを定義しました。ただし、今すぐ{{ photo.image.url }}/media/photo_image_files/filename.jpgを指しています。回避策として、私は

<img src="/jpeg/{{ photo.name }}" /> 

などの画像が含ましかし、それはurls.pyで、テンプレートに、私は二度の場所を指定します意味します。 URLをカスタマイズするにはどうすればよいですか?

答えて

0

あなたはImageFieldをサブクラス化し、独自の.url()方法を定義できます、確かに感謝を

class Photo(models.Model): 
    image = models.JpegImageField(upload_to='photo_image_files') 
+0

class JpegImageField(ImageField): @property def url(self): return "/jpeg/{name}".format(name=self.name) 

、代わりに定期ImageFieldの新しいフィールドクラスを使用します。 – texnic

関連する問題