django工程使用静态文件

django中使用static文件-图片,css,js文件非常麻烦。于是直接使用apache的alias功能。

在development环境开发时,也就是使用django自带的web server来开发测试时可以在urls.py中加入:

from django.conf import settings
urlpatterns += patterns(”,
    (r’^static/(?P<path>.*)$’, ‘django.views.static.serve’, {‘document_root’: settings.STATICFILE_ROOT}),
)

在settings.py中定义STATICFILE_ROOT,其值为你想要放静态文件的目录。

这样就可以了。

但是当你部署项目到apache上面发现就不可以了。

如果直接使用alias就可以解决这个问题,其实django的book也是推荐这种方法。

alias就是把匹配的请求和对应的文件或者目录对应起来,例如

Alias   /static/images     /var/www/django/test/resources/pictures

这样比如访问:

http://[ip]/static/images/test.png

apache就会访问

/var/www/django/test/resources/pictures/test.png

因此可以在virtualhost 里面加上一句,有一点非常之非常重要,就是这句一定要在

WSGIScriptAlias / /var/www/django/test/django.wsgi

之前,否则不管访问什么url,都会转去django.wsgi文件执行,那么上面加的那句就没有任何效果。

下面给出一个简单的配置

  1 <VirtualHost *:8088>
  2
  3     ServerName  127.0.0.1
  4     DocumentRoot /var/www/django/test
  5     LogLevel info
  6     ErrorLog ${APACHE_LOG_DIR}/hello-error.log
  7     CustomLog ${APACHE_LOG_DIR}/hello-access.log Combined
  8
  9     Alias /resources/pictures/ /var/www/django/test/resources/pictures/
 10     WSGIScriptAlias / /var/www/django/test/django.wsgi
 11
 12     <Directory /var/www/django/test/static>
 13         Options indexes
 14         Order allow,deny
 15         Allow from all
 16     </Directory>
 17
 18     <Directory />
 19         Options indexes
 20         Order allow,deny
 21         Allow from all

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *