Django管理员查看上传的照片

时间:2011-07-12 19:37:08

标签: django file-upload django-admin imageview

我已经在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来查看图像,当然还有应该如何修改管理类。

我很高兴为我提供一种方法来实现这一目标。感谢...

4 个答案:

答案 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)

到目前为止,您可能要么已经解决了问题,要么完全退出了问题,但经过这么多年后,人们(像我一样)仍然遇到这个问题。以下是我刚刚解决的问题:

  1. 在settings.py上,我不仅设置了STATIC_URL(带有静态文件夹的名称)和STATIC_URL(带有该文件夹的路径),还设置了{{1相应地,上传的图像将存储在;

  2. 在我的模特课上,我的照片字段如下:

    MEDIA_URL
  3. 它会将图像上传到我的MEDIA_ROOT文件夹,并附加MEDIA_ROOT

    1. 最后,在我的urls.py上,我的urlpatterns看起来像这样:

      picture = models.FileField(upload_to='images/')
      
    2. 注意我是如何在列表后面添加静态的。

      Django的文档清楚地表明,这种策略不建议用于生产环境,它提供了一些您可以选择的替代方案。有关详细信息:https://docs.djangoproject.com/en/1.10/howto/static-files/#serving-files-uploaded-by-a-user-during-development