だから私は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}))
よろしくお願いします