查看上传到Django Admin的图像

时间:2014-03-25 21:07:41

标签: python django

我有一个简单的Django管理页面,可以将图像上传到产品说明中。一切正常,直到我尝试通过单击产品信息中的路径来查看图像。我收到这个错误:

Page not found (404)
Request URL:    http://0.0.0.0:6666/the_image.jpg

我猜我需要在urls.py中声明一些内容,但我不知道从哪里开始。我还尝试在settings.py中更改我的媒体路径,但如果我改为“/”以外的任何内容,我总是会出错。

model.py

class Image(models.Model):
    product_image = models.ForeignKey(Product)
    image = models.ImageField(upload_to='/')

settings.py

MEDIA_ROOT = '/'
MEDIA_URL = '/'

admin.py

class InlineImage(admin.TabularInline):
    model = Image

class ProductAdmin(admin.ModelAdmin):
    inlines = [InlineImage]

1 个答案:

答案 0 :(得分:1)

文档在这里https://docs.djangoproject.com/en/dev/ref/settings/#media-root

您需要在设置文件中设置MEDIA_ROOT和MEDIA_URL,如下所示

MEDIA_ROOT = /var/www/example.com/media/
MEDIA_URL = /media

并且您的upload_to应该是模型名称或标识它的东西。

image = models.ImageField(upload_to='image')

然后该链接应指向/media/image/NAME_OF_IMAGE.png

您还需要将urls.py设置为服务器媒体文件。对于生产,您可能希望在别名中使用nginx执行此操作。见https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user-during-development

其中说:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)