Django中的静态文件和媒体文件有什么区别?

时间:2011-02-16 12:45:12

标签: python 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_ROOTSTATIC_ROOT放入什么?那些应该是单独的目录吗?有什么区别?

2 个答案:

答案 0 :(得分:52)

静态文件适用于javascript /图像等,但媒体文件适用于用户上传的内容。

答案 1 :(得分:29)

正如Uku Loskit所说,静态文件适用于应用程序的css文件,javascript文件,图像等。媒体文件通常是用户或管理员可上载的文件。

通常,您希望MEDIA_ROOTSTATIC_ROOT成为单独的目录。请记住,STATIC_ROOT是管理命令collectstatic将放置它找到的所有静态文件的位置。在生产中,您可以配置您的网络服务器,以便在收到STATIC_ROOT开头的请求时提供STATIC_URL以外的文件。如果您使用Django devserver进行开发,它将自动提供静态文件。

静态文件应用程序因此从应用程序媒体中解开用户上载的媒体,从而使部署,备份和版本控制更容易。在staticfiles应用程序之前,开发人员通常将媒体文件与静态应用程序资产混合在一起。

静态文件的1.3文档一直在稳步提高;有关详细信息,请查看how-to