1

だから私は2つの異なる環境を作成する必要があるwebfactionのプロジェクトを持っています.1つはサーバーdjangoに、もう1つはサーバー静的ファイルに。

したがって、管理パネルから画像をアップロードすると、画像が定義されたルートに配置されていることがわかりますが、フルパスが含まれています。ビューで画像を返すと、domain.com/full/media/root/path/imagename を取得します

これにより、壊れたリンクが生成されます。mydomain.com/uploads/image_name にアクセスすると、そこに画像ファイルがあることがわかりますが、リンクは root_url ではなくフル パスを指しています。

これで私を助けてもらえますか?ビューでこの画像リンクを修正する方法が本当にわかりません

<img src="{{ MEDIA_URL }}{{ mymodel.my_image }}" alt="{{ name }}" width="150" height="200" />

ここにこれに似たトピックが非常に多いことは理解していますが、パスルートを非表示にする方法や「アップロード」に変更する方法に関して、どれも正しく指示できませんでした

管理者で正常に動作するものがあります

class Movie(models.Model):

name = models.CharField(max_length=50)


def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (uuid.uuid4(), ext)
    return os.path.join( '/home/user/webapps/project/uploads/' , filename)


my_image = models.ImageField(upload_to = get_file_path, null=True, blank=True)
def __unicode__(self):
    return self.name

私の設定では:

MEDIA_ROOT = '/home/user/webapps/project/uploads/'
MEDIA_URL = '/uploads/'

およびプロジェクトの URL:

django.conf.urls からのインポート パターン、インクルード、django.conf からの URL インポート設定

  from django.contrib import admin
  admin.autodiscover()

  urlpatterns = patterns('',      
    url(r'^admin/', include(admin.site.urls)),
  )


if settings.DEBUG:
urlpatterns += patterns('',
(r'^uploads/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))

よろしくお願いします

4

2 に答える 2

1

最初にモデルの画像フィールドを作成し、そこで画像をアップロードする場所を定義する必要があります。

class mymodel(models.Model):
    name = models.CharField(max_length=50)
    my_image = models.ImageField(blank=True, null=True,upload_to='/home/user/webapps/project/uploads/')

その後、データベースからモデルオブジェクトを取得した後に画像を表示したい場合は、テンプレートでこれを試してください:

<img src="{{ mymodel.my_image.url }}" alt="{{ mymodel.name }}" width="150" height="200" />
于 2014-04-24T10:27:16.220 に答える
1

以下を使用できます。

{{ mymodel.my_image.url }}
于 2014-04-24T08:27:50.470 に答える