Django1.6和1.7静态文件配置方法

最近一直在用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网站并没有相应的效果,这主要是由于浏览器缓存造成的,只要清理一下缓存即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值