百 e 购开发日记(四)
静态文件
在项目中的 CSS javascript 上传的图片等 , Django 本身不提供静态文件服务所以第一步就是 Apache 中配置静态文件服务:
Alias /media/ /{{YOUR_MEDIA_LOCATION}} / <Directory /{{YOUR_MEIDA_LOCATION}} > Order deny,allow Allow from all </Directory>
配置好了以后,所有 /media 路径下的请求请被 Apache 静态转发了。 Django 的配置我们还有修改修改。一个是 MEIDA_URL, 还有一个就是 ADMIN_MEDIA_PREFIX
MEDIA_URL 也时就是所有静态文件的前缀了 , 比如你的 MEIDA 放置的目录是
my_home/ media/ css/ main.css
你的 Django 模板可能是这样设定的:
<script type="text/javascript" src="{{MEDIA_URL}}css/main.css"></script>
此 MEDIA_URL 就是上面在 settings.py 里面配置的。
为什么需要 ADMIN_MEDIA_PREFIX 呢, django 自己的发布包里面就带有一份静态的资源 css& js 等等,他的目录是在系统的 django 安装目录下也就是 python 的 site-packages 包内,所以我们需要吧他拷贝出来放置在我们的 media 下面将来自己要改的可以改吧改吧。
具体的目录在:
python25\Lib\site-packages\django\contrib\admin\media
ok, 到这里基本都配置了。 放一个静态文件在你的 meida 尝试访问一下看看。
图片的处理
图片的保存位置,在 Django 的 settings.py 里面我们需要加入如下配置:
MEDIA_ROOT = '{{YOUR_MEIDA_DIR}}'
必须是一个绝对路径的位置,而其主要了一定要在你的静态文件夹下,而其写权限要打开, Django 本身自带了一个自动处理上传文件的组件: ImageField, 但是往往这个不能往前满足我们的需求,比如往往我们需要对上传的图片压缩,剪切啊,生成不同大小的 thumb, 这个有该如何操作呢? 当然 ImageField 留下用户可以定制的接口:
upload_to: 提供重新命名上传文件名 / 上传路径的接口
storage : 具体的储存方式,这个时候我们可以对图片进行各种操作
可以具体参照 Django 的自带的 django.core.files.storage.FileSystemStorage
一般 Python 下是用的 PIL 对图片进行处理, django 已经有第三方提供比较成熟的图片处理应用 Django photologue 。
很多网站,用户都可以剪辑自己的头像,如果你是使用 Jquery 的 Jcrop 进行 WEB 端的剪辑,后台同样适应 PIL 进行操作。 下一将将是 Django 模型。 Django 遵循 MVC 设计模式,但是他的具体的 Model Control & View 具体的角色有点不太一样 , 非纯粹的学院派描述的那个样子。