我有一个简单的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]
答案 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)