django配置静态资源和媒体资源

     阅读:23

在项目下,新建文件夹pstatic存放静态资源,新建文件夹media存放媒体资源。

配置静态资源

静态资源的配置分别由配置属性STATIC_URL,STATICFILES_DIRS和STATIC_ROOT完成,默认情况下,Django只配置了配置属性STATIC_URL。
一个项目在开发过程中肯定需要使用CSS和JavaScript文件。这些静态文件的存放路径主要在配置文件settings.py设置,Django默认的配置
信息如下:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'

上述配置是设置静态资源的路由地址,其作用是使浏览器能成功访问Django的静态资源,默认情况下,Django只能识别项目应用(APP)的静态
资源。当项目启动时,Django会从项目应用(APP)里面查找相关的资源文件,查找功能主要由列表INSTALLED_APPS的staticfiles实现。

项目应用(APP)的static文件夹在创建项目应用的时候不会自动生成,开发者还需要自行在项目应用(APP)里面创建static文件夹。如果该文件夹改为其他名字,Django将无法识别;若将static文件夹放在项目目录下,则Django也是无法识别的。

由于STATIC_URL的特殊性,在开发中会造成诸多不便。可以将文件夹pstatic写入资源集合STATICFILES_DIRS,在配置文件settings.py添加并设置配置属性STATICFILES_DIRS,该属性以列表或元组的形式表示,设置方式如下:

#添加并设置配置属性STATICFILES_DIRS
STATICFILES_DIRS=( os.path.join(BASE_DIR,'pstatic'),)

静态资源配置还有STATIC_ROOT,其作用是在服务器上部署项目,实现服务器和项目之间的映射。STATIC_ROOT主要是收集整个项目的静态资源
并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。

STATIC_ROOT=os.path.join(BASE_DIR,'AllStatic')

当配置属性DEBUG设为False的时候,意味着项目进入生产环境。Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT.

配置媒体资源

一般情况下,STATIC_URL是设置静态文件的路由地址,如CSS样式文件,JavaScript文件以及常用图片等,对于一些经常变动的资源,通常将其存放在媒体资源文件夹。媒体资源和静态资源是可以同时存在的,而且两者可以独立运行,互不影响。而媒体资源只有配置属性MEDIA_URL和MEDIA_ROOT,新建的文件夹media是用来存放媒体资源文件的,在配置文件settings.py分别设置MEDIA_URL和MEDIA_ROOT,使Django在运行的时候能够自动识别媒体资源文件夹media,详细的设置方式如下:

#配置媒体资源
MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')