我已经在Django中实现了照片上传,但我有一个问题就是查看Django admin。
models.py
class WorkPlacePhoto(models.Model):
file = models.FileField(storage=FileSystemStorage(location=settings.MEDIA_ROOT), upload_to='uploads')
照片保存在PATH_TO_APP/media/uploads/
,我可以在我的应用中查看。但是,在管理面板中,当我点击生成管理员应用程序的链接时,它会给我404错误
Request Method: GET
Request URL: http://127.0.0.1/admin/wpphotos/workplacephoto/9/media/uploads/aosa_glb_ho_778_hi.jpg/
u'9/media/uploads/aosa_glb_ho_778_hi.jpg' object is not found
虽然消息很清楚,但我无法确定应该编写哪个URL来查看图像,当然还有应该如何修改管理类。
我很高兴为我提供一种方法来实现这一目标。感谢...
答案 0 :(得分:3)
从你的描述中我猜你的MEDIA_URL设置不正确,使用Django开发网络服务器有点棘手。
我猜这个链接的href可能是media/uploads/aosa_glb_ho_778_hi.jpg
你可能需要/media/uploads/aosa_glb_ho_778_hi.jpg
所以它与http://127.0.0.1/
相对而不是你现在所处的位置http://127.0.0.1/admin/wpphotos/workplacephoto/9/
有关如何使用Django开发服务器提供图像的灵感,请参阅static files documentation。
答案 1 :(得分:0)
我有同样的问题,但我设法解决了 - 但这不是一个正确的方法,如果可能,我想使用更好的解决方案。
我做的是,我在端口80上运行apache,所以我在/var/www
文件夹中创建了一个符号链接,指向Django App目录中的Images
文件夹。媒体网址基本上是这样的:
MEDIA_URL = 'http://127.0.0.1/Images/'
这项工作很好,但我不喜欢这个解决方案 我没有完全按照上面解释的解决方案。有人可以解释一下吗?
答案 2 :(得分:0)
你可能在你的settings.py
中MEDIA_URL = 'media/'
作为网址亲戚,您在管理面板中有这种行为。解决方案是将url设置为绝对值
MEDIA_URL = '/media/'
答案 3 :(得分:0)
到目前为止,您可能要么已经解决了问题,要么完全退出了问题,但经过这么多年后,人们(像我一样)仍然遇到这个问题。以下是我刚刚解决的问题:
在settings.py上,我不仅设置了STATIC_URL
(带有静态文件夹的名称)和STATIC_URL
(带有该文件夹的路径),还设置了{{1相应地,上传的图像将存储在;
在我的模特课上,我的照片字段如下:
MEDIA_URL
它会将图像上传到我的MEDIA_ROOT文件夹,并附加MEDIA_ROOT
。
最后,在我的urls.py上,我的urlpatterns看起来像这样:
picture = models.FileField(upload_to='images/')
注意我是如何在列表后面添加静态的。
Django的文档清楚地表明,这种策略不建议用于生产环境,它提供了一些您可以选择的替代方案。有关详细信息:https://docs.djangoproject.com/en/1.10/howto/static-files/#serving-files-uploaded-by-a-user-during-development