Django中静态文件和媒体文件的区别是什么?
我正在升级到Django 1.3,发现媒体文件和静态文件的分开有点让人困惑。这里是默认的 settings.py
文件的样子:
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory that holds static files.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''
# URL that handles the static files served from STATIC_ROOT.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
我应该把什么放进 MEDIA_ROOT
和 STATIC_ROOT
呢?这两个应该是不同的文件夹吗?它们有什么区别?
3 个回答
静态文件:
静态文件是指应用程序中用来设计用户界面的资源,比如CSS和Javascript。这些文件在应用运行时通常不会改变。在Django中,大家一般会把所有的静态文件放在一个叫static的文件夹里。
存放在这个文件夹里的所有文件可以通过一个命令'collectstatic'来调用,这是一种在Django中高效调用文件的方法。
媒体文件:
媒体文件是用户生成的,特定于应用程序的文件,比如图片、文档、视频、音频文件等等。每个用户或应用程序的媒体文件通常都是独一无二的,并且可能会经常变化。
在Django中,媒体文件会存放在一个叫media的文件夹里。与静态文件不同,媒体文件不会被Django收集或管理。相反,Django提供了一些工具来处理媒体文件的上传,并直接从指定的媒体网址提供这些文件。
正如Uku Loskit所说,静态文件是指你应用程序的css文件、javascript文件、图片等。而媒体文件通常是用户或管理员上传的文件。
通常情况下,你会希望MEDIA_ROOT
和STATIC_ROOT
是分开的文件夹。要记住的是,STATIC_ROOT
是管理命令collectstatic
会把它找到的所有静态文件放置的地方。在生产环境中,你需要配置你的网络服务器,让它在接收到以STATIC_URL
开头的请求时,从STATIC_ROOT
中提供文件。如果你在开发时使用Django的开发服务器,它会自动提供静态文件。
静态文件应用程序将用户上传的媒体文件和应用程序的媒体文件分开,这样在部署、备份和版本控制时会更简单。在有静态文件应用程序之前,开发者常常把媒体文件和静态应用资产混在一起。
关于静态文件的1.3文档一直在不断改进;想了解更多细节,可以查看这个如何做的链接。
静态文件是指一些固定的文件,比如JavaScript脚本、图片等,而媒体文件则是指用户上传的内容,比如照片、视频等。