Django 1.6 загрузка изображений и медиа-путь

Поэтому у меня есть проект webfaction, в котором мне нужно создать две разные среды: одну для сервера django и одну для сервера статических файлов.

Поэтому, когда я загружаю изображение из панели администратора, я вижу, что изображение помещено в корень, который я определил, но с полным путем. Когда я возвращаю изображение в моем представлении, я получаю мой 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, включая URL-адрес из настроек импорта django.conf

  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}))

Спасибо всем заранее

2 ответа

Решение

Сначала для вашей модели вы должны создать поле изображения, и там вы должны определить, куда вы хотите загрузить свое изображение:

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" />

Ты можешь использовать:

{{ mymodel.my_image.url }}
Другие вопросы по тегам