Django 如何管理 css 等静态文件

django的template确实很强大,但是我们不可能把CSS文件也嵌入到template中。

但是CSS又不能简单的放在template目录下让template调用,因为django的目录结构是由urls.py这个文件来指定的,凡是没有指定的路径,外界都不能访问。

所以,最好的办法,是指定一个目录,该目录下所有的文件都能够被匿名用户访问。

虽然django的官方文档很详细,但是,一般人还是很难看懂其中staticfiles app到底是在扯什么东西。

好在django默认建立的project的settings.py文件中有MEDIA_ROOT,MEDIA_URL等选项。去网上搜索了一把,找到了一篇文章(墙外),差不多可以解决这个问题。虽然,貌似没有staticfiles神马的用起来方便。

首先,在settings.py文件中定义(以下代码都是写文章时候手打的,如有错误请留言指正)

MEDIA_ROOT=os.path.join(os.path.dirname(__file__),'media').replace('\\','/') #如果是*nix系统,不需要replace函数
MEDIA_URL='/media/' #末尾一定要加上/
ADMIN_MEDIA_PREFIX = '/media/admin/' #填啥都可以,就是不能跟MEDIA_URL一样

然后,在urls.py文件中:

from django.views.static import *
from django.conf import settings

#...
#以下是urlpatterns中的
(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})

做完这些之后,测试一下 yourdomain.com/media/default.css
仅仅输入 yourdomain.com/media/ 是看不到任何东西的。

最后,如果没有什么问题,那么,在template的html文件中,可以直接这么调用css以及image等文件啦

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。