Django静态文件配置备忘录
早就听说Django配置静态文件比较麻烦,关键是没有很好的教程来说这个事,就算有教程也是说的很含糊,摸索了2天,终于搞好了Admin里通过FileField上传下载的问题了,记录如下:
1、修改settings.py
#上传文件所在的物理根目录
MEDIA_ROOT = 'd:/output/django/landsupervisor/media'
#上传的文件依赖这个url前缀来获取文件,这个前缀最终要和上面的MEDIA_ROOT映射起来(在url.py里做),这个前缀坚决要和下面的ADMIN_MEDIA_PREFIX区分开,我就是把这两个设置为一样的,所以总提示找不到上传后的文件。
MEDIA_URL = '/mymedia/'
#ADMIN自己的静态目录url前缀,ADMIN里的静态文件都是通过这个前缀获取的,系统会自己映射到类似X:\Django-1.2.1\django\contrib\admin\media的目录上
ADMIN_MEDIA_PREFIX = '/media/'
2、修改url.py
在urlpatterns变量中追加这么一句 (r'^mymedia/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.MEDIA_ROOT}),
就是把上菜设置的MEDIA_URL前缀通过django静态服务映射到物理路径settings.MEDIA_ROOT上。
3、ADMIN的模型中可以使用
xfile = Filefield(upload_to='images')
ADMIN里就会自动有一个上传文件的表单控件来完成上传工作。