您的位置:首页 > 编程语言 > Go语言

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,例如

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