免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5240 | 回复: 0
打印 上一主题 下一主题

对Django中ImageField的一些认识 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-06 21:54 |只看该作者 |倒序浏览
Django中model里的ImageField在mysql数据库中的相应字段是一个
varchar(100)(ImageField是没有参数情况下的),它存放的是图片的相对路径(upload_to的值加上图片名)。
ImageFileld字段在前台的表现为一个上传文件的域,只不过在这里只能上传图片而已,这个和FileField非常相似。要使用
ImageField需要Python Imaging Library(PIL库)。
直接调用ImageField字段得到的一个ImageField类的值,只要str()转换它既可以得到数据库中存放的图片相对路径。
在定义ImageField字段是必须制定参数upload_to。这个参数会加在settings.py中的MEDIA_ROOT后面,形成一个路径,
这个路径就是上传图片的存放位置。所以要用ImageField最好要设置settings.py中的MEDIA_ROOT。
在后台的管理页面中,默认情况下ImageField也是表现为一个上传图片的域,并且还有一个指向图片的链接(图片的url路径)。这个链接我要特别的
说明一下,因为在这里我浪费了好多的时间。settings.py中有MEDIA_URL这个字段,如果不设置它的话,点击这个链接,url会变成上个页
面的url加上图片的路径,会报错把图片url的字符串int()时出错。设置这个字段之后,url会变得很不一样,这时url是
ADMIN_MEDIA_PREFIX的值加上图片的url路径。图片的url路径就是upload_to这个属性的值。
在这里说一下settings.py中几个相关的属性的意义。
MEDIA_URL:给这个属性设值之后,静态文件的链接前面会加上这个值。
MEDIA_ROOT:存放media的路径,这个值加上upload_to的值就是真实存放上传图片文件位置
ImageField属性upload_to:这个属性是必填的,这个值是显示在admin后台的图片的链接。还有就是这个值前面加上MEDIA_ROOT就是真实存放上传图片的位置。
ADMIN_MEDIA_PREFIX:这个值是admin的静态文件链接的前缀。如果这个值和MEDIA_URL的值设重了(我已开始就是这么设置
的),那么非admin的静态文件时不能显示的,会报错xxxxx不存在。这是因为MEDIA_URL和ADMIN_MEDIA_PREFIX是重的,查
找静态文件的时候把所有的静态文件都当做是admin的静态文件了,都在admin的静态文件目录下查找了,所以查找不到。将这两个值设置成不一样就解决
这个问题了。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/103690/showart_2046753.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP