Django1.6和1.7静态文件配置方法
2015-04-15 22:21
696 查看
最近一直在用Django1.6和1.7做项目,感触比较多,如果大家初次使用Django的话难免会对它的静态文件配置感到头疼,网上也是众说纷纭,所以我把我的解决思路整理一下,希望能对大家有所帮助。
需要说明一下,在Django的项目文件里有一个DEBUG = True选项,当这个选项为True时为调试模式,在这个模式下我们可以通过
root@ubuntu:~/mysite# python manage.py runserver
来运行Django自带服务器,而当DEBUG=False时,调试模式关闭,这是一般使用Nginx之类的服务器来运行。在这个时候静态文件的加载是交给Nginx来设置的。所以我们进行静态文件配置主要是为了在runserver模式下进行测试开发。我实验了两种方法。
(一)、利用templates来加载。
我们在使用Django时,一定会在setting.py文件中配置一个TEMPLATE_DIRS的路径,一般是在工程目录下建立一个叫templates的文件夹,来存储我们的模板,第一种方法正是利用这个路径来加载静态文件的url。
1、在setting.py文件中设置TEMPLATE_DIRS,例如
导入from mysite.settings import TEMPLATE_DIRS
并在urlpatterns = patterns中添加如下url,以我为例:
即在templates文件夹下建立css和js两个文件夹,在css下建立一个叫images的文件夹。
3、在html文件中,用如下方法调用:
这个方法是可以成功的,但我感觉静态文件的布置过于散乱,而且设置了三个目录,以后在nginx里配置的时候也会稍微费些笔墨,所以我有咨询了下学长,找到了第二种方法。
(二)、用STATIC_ROOT设置
1、打开setting.py文件,在开头出一般自动建立时就会有:
2、在html中用如下方法引用
在<head>前(随便,只要在引用静态文件前加即可)加上:
这样在runserver中静态文件就可以使用了。
另外,还有一点需要注意,很多时候修改了css网站并没有相应的效果,这主要是由于浏览器缓存造成的,只要清理一下缓存即可。
需要说明一下,在Django的项目文件里有一个DEBUG = True选项,当这个选项为True时为调试模式,在这个模式下我们可以通过
root@ubuntu:~/mysite# python manage.py runserver
来运行Django自带服务器,而当DEBUG=False时,调试模式关闭,这是一般使用Nginx之类的服务器来运行。在这个时候静态文件的加载是交给Nginx来设置的。所以我们进行静态文件配置主要是为了在runserver模式下进行测试开发。我实验了两种方法。
(一)、利用templates来加载。
我们在使用Django时,一定会在setting.py文件中配置一个TEMPLATE_DIRS的路径,一般是在工程目录下建立一个叫templates的文件夹,来存储我们的模板,第一种方法正是利用这个路径来加载静态文件的url。
1、在setting.py文件中设置TEMPLATE_DIRS,例如
TEMPLATE_DIRS = ( '/home/hp/mysite/templates', )2、在url.py文件中
导入from mysite.settings import TEMPLATE_DIRS
并在urlpatterns = patterns中添加如下url,以我为例:
url(r'^images/(?P<path>.*)$','django.views.static.serve', {'document_root':TEMPLATE_DIRS[0]+'/css/images'}), url(r'^css/(?P<path>.*)$','django.views.static.serve', {'document_root':TEMPLATE_DIRS[0]+'/css'}), url(r'^js/(?P<path>.*)$','django.views.static.serve', {'document_root':TEMPLATE_DIRS[0]+'/js'}),以上设置的路径在系统中表示为images: /mysite/templates/css/images,css:/mysite/templates/css,js:/mysite/templates/js
即在templates文件夹下建立css和js两个文件夹,在css下建立一个叫images的文件夹。
3、在html文件中,用如下方法调用:
<link rel="stylesheet" type="text/css" href="/css/loggedin.css"> <script type="text/javascript" src="/js/regulate.js"></script>注意一定是/css/,前面的/千万不能省略,images与这调用类似,而在css文件中,因为css与image的文件夹同目录,所以直接写images/*.png之类的即可,这里不要有前斜杠。
这个方法是可以成功的,但我感觉静态文件的布置过于散乱,而且设置了三个目录,以后在nginx里配置的时候也会稍微费些笔墨,所以我有咨询了下学长,找到了第二种方法。
(二)、用STATIC_ROOT设置
1、打开setting.py文件,在开头出一般自动建立时就会有:
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__))有了它,我们就可以在setting.py里添加如下配置:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "static").replace('\\', '/') STATICFILES_DIRS = ( ("css",os.path.join(STATIC_ROOT,'css')), ("js",os.path.join(STATIC_ROOT,'js')), ("images",os.path.join(STATIC_ROOT,'images')), )
2、在html中用如下方法引用
在<head>前(随便,只要在引用静态文件前加即可)加上:
{% load staticfiles %}之后引用文件的格式如下:
<link rel="stylesheet" type="text/css" href="{% static 'css/register.css' %}">注意:这里css前不要用斜杠,很多时候这里出错了。js和images的引用类似。
这样在runserver中静态文件就可以使用了。
另外,还有一点需要注意,很多时候修改了css网站并没有相应的效果,这主要是由于浏览器缓存造成的,只要清理一下缓存即可。
相关文章推荐
- django 1.6 静态文件的配置
- Django配置静态文件的方法
- django1.7静态文件配置(css/js/img)
- Django上静态文件的配置方法
- django中静态文件配置static的方法
- Django-项目上线后,静态文件配置失效以及404、500页面的全局配置
- django 配置静态文件
- django - 本地访问不了静态文件的解决方法
- django - 本地访问不了静态文件的解决方法
- [py][mx]django静态文件目录配置
- DJango配置css等静态文件
- PythonWeb框架之Django网页静态文件有效配置(CSS、JS等)
- Django基于Pycharm开发之四[关于静态文件的使用,配置以及源码分析](原创)
- Django 配置文件settings注解(含静态文件和上传文件配置)
- Django 配置静态文件
- django使用js或者图片等静态文件的引用方法
- Django-模板继承、包含和静态文件配置
- django静态文件加载的方法
- Django压缩静态文件的实现方法详析
- 006---Django静态文件配置