django1.10使用本地静态文件

Posted 每天1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django1.10使用本地静态文件相关的知识,希望对你有一定的参考价值。

django1.10使用本地静态文件方法 

本文介绍的静态文件使用,是指启动web站点后,访问静态资源的用法,实际静态资源地址就是一个个的url
如果没有启动web站点,只是本地调试html页面,那直接用相对路径访问资源即可
 
1.settings.py中加入下面两句话(应该是默认的,不需要增加)
STATIC_URL = /static/
STATIC_ROOT = os.path.join(BASE_DIR, static)
 
说明:
1.STATIC_URL为访问静态资源的链接,比如127.0.0.1/static/文件
2.STATIC_ROOT为访问静态资源文件的目录,BASE_DIR为根目录,可以打印一下看看。然后后面跟的是具体的子目录
比如我用的是根目录下的webManage/static目录
STATIC_ROOT = os.path.join(BASE_DIR, ‘webManage/static‘)
 
2.配置urls.py文件
from django.views import static
from 工程目录 import settings
 
url(r^static/(?P<path>.*)$, static.serve, {document_root:settings.STATIC_ROOT}, name=static),
 
3.访问静态资源
静态资源链接:根据STATIC_URL定义的值作为前缀,后面跟具体文件名
静态文件放置位置:STATIC_ROOT下的文件夹内
 
比如我文件放在了STATIC_ROOT/js/pie.js下,我可以像下面这样调用pie.js文件
<script src="/static/js/pie.js"></script>

遇到的问题 

问题1:
django 1.10 urls.py配置static静态文件的链接
url(r‘^static/(?P<path>.*)$‘, ‘django.views.static.serve‘, {‘document_root‘: settings.STATIC_ROOT}, name=‘static‘),
报错:raise TypeError(‘view must be a callable or a list/tuple in the case of include().‘)
 
解决方法:
改成下面的 格式
from django.views import static
from 工程目录 import settings
url(r^static/(?P<path>.*)$, static.serve, {document_root:settings.STATIC_ROOT}, name=static),
 
原因:django 1.10 url的格式变了,需要引入view对象,然后调用view对象中的方法,不能直接用字符串的形式了
 
参考文档:
 
 
问题2:
访问静态文件时,报下面的错误
django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
 
解决方法:
修改settings.py文件,将STATICFILES_DIRS中包含的STATIC_ROOT的路径删除掉
 
比如我的STATICFILES_DIRS原来包含了../webManage/static/,而我实际上是用这个地址作为我的静态资源文件地址
STATICFILES_DIRS = (
    # 动态的获取static文件的路径,注释掉STATIC_ROOT的路径
    # os.path.join(os.path.dirname(__file__), ‘../webManage/static/‘).replace(‘\\‘, ‘/‘),
    os.path.join(os.path.dirname(__file__), ../static/).replace(\\, /),
    os.path.join(os.path.dirname(__file__), ../static/js/).replace(\\, /),
)

 

以上是关于django1.10使用本地静态文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在python文件中,引用django1.10的model

Django 1.10 模板语法错误。您是不是忘记注册或加载此标签?

支持动态或静态片段的不同屏幕尺寸?

[Python] Django框架入门5——静态文件中间件上传图片和分页

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

django源码分析——静态文件staticfiles中间件