Chinaunix首页 | 论坛 | 博客
  • 博客访问: 480010
  • 博文数量: 111
  • 博客积分: 2332
  • 博客等级: 大尉
  • 技术积分: 1187
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-29 11:22
文章分类

全部博文(111)

文章存档

2013年(9)

2012年(28)

2011年(17)

2010年(28)

2009年(29)

我的朋友

分类: Python/Ruby

2009-09-06 21:54:40

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这个属性的值。要注意的是MEDIA_URL要在前后都加上"/",表示从根目录开始,如:MEDIA_URL = '/site_media/'。
在这里说一下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的静态文件目录下查找了,所以查找不到。将这两个值设置成不一样就解决 这个问题了。
阅读(8295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~