欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

自强学堂 16)Django 静态文件

shiping1 的头像

静态文件是指 网站中的 js, css, 图片,视频等文件

开发阶段

推荐用新版本的django进行开发

静态文件放在对应的 app 下的 static 文件夹中,当 DEBUG = True 时,Django 就能自动找到放在里面的静态文件。

当然也可以自己指定静态文件夹, 在urls.py的最后边这样写

1
2
3
4
5
6
7
# static files
import os
from django.conf.urls.static import static
from django.conf import settings
if settings.DEBUG:
    media_root = os.path.join(settings.BASE_DIR,'media')
    urlpatterns += static('/media/', document_root=media_root)

也可以这样

1
2
3
4
5
6
from django.conf.urls.static import static
 
urlpatterns = patterns('',
    url(r'^$''app.views.index', name='index'),
    url(r'^admin/', include(admin.site.urls)),
+ static('/media/', document_root=media_root)

 

部署时

用apache2来管理

1. 收集静态文件

1
python manage.py collectstatic

这一句话就会把以前放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中

 

2. apache2配置文件

1
2
3
4
5
Alias /static/ /path/to/static/
 
<Directory /path/to/static>
    Require all gr@nted
</Directory>


完整的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<VirtualHost *:80>
        ServerName www.ziqiangxuetang.com
        ServerAlias ziqiangxuetang.com
        ServerAdmin tuweizhong@163.com
 
        Alias /favicon.ico /path/to/static/favicon.ico
        Alias /media/ /path/to/media/
        Alias /static/ /path/to/static/
 
        <Directory /path/to/media>
                Require all gr@nted
        </Directory>
 
        <Directory /path/to/static>
                Require all gr@nted
        </Directory>
 
        WSGIScriptAlias / /path/to/prj/prj/wsgi.py
        <Directory /path/to/prj/prj>
        <Files wsgi.py>
                Require all gr@nted
        </Files>
        </Directory>
</VirtualHost>

如果你用的是apache 2.2 版本 用下面的代替 Require all gr@nted 赋予权限

1
2
Order allow,deny
Allow from all

备注:(用 apachectl -v 命令查看 apache2版本号)

 

补充:有没有不把静态文件放在static和media,还能访问到的方法呢?刚开始搞Django的时候其实我也一直在找,因为毕竟asp,php可以直接访问路径中对应的静态文件。

下面是一个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<VirtualHost *:80>
    ServerName www.ziqiangxuetang.com
    ServerAdmin tuweizhong@163.com
 
    Alias /favicon.ico /var/www/python/zqxt/favicon.ico
    Alias /media/ /var/www/python/zqxt/media/
    Alias /static/ /var/www/python/zqxt/static/
 
    AliasMatch "(?i)^/(.+)\.js$" "/var/www/python/zqxt/$1.js"
    AliasMatch "(?i)^/(.+)\.css$" "/var/www/python/zqxt/$1.css"
    AliasMatch "(?i)^/(.+)\.jpg$" "/var/www/python/zqxt/$1.jpg"
    AliasMatch "(?i)^/(.+)\.jpeg$" "/var/www/python/zqxt/$1.jpeg"
    AliasMatch "(?i)^/(.+)\.png$" "/var/www/python/zqxt/$1.png"
    AliasMatch "(?i)^/(.+)\.gif$" "/var/www/python/zqxt/$1.gif"
    AliasMatch "(?i)^/(.+)\.xml$" "/var/www/python/zqxt/$1.xml"
    AliasMatch "(?i)^/(.+)\.xsl$" "/var/www/python/zqxt/$1.xsl"
    AliasMatch "(?i)^/(.+)\.txt$" "/var/www/python/zqxt/$1.txt"
    AliasMatch "(?i)^/(.+)\.zip$" "/var/www/python/zqxt/$1.zip"
    AliasMatch "(?i)^/(.+)\.rar$" "/var/www/python/zqxt/$1.txt"
 
    <Directory /var/www/python/zqxt>
        Require all gr@nted
    </Directory>
 
    WSGIScriptAlias / /var/www/python/zqxt/zqxt/wsgi.py
 
    ErrorLog /var/www/python/zqxt/error.log
    CustomLog /var/www/python/zqxt/access.log common
</VirtualHost

更详细的部署讲解请查看 Django 部署

 
来自 http://www.ziqiangxuetang.com/django/django-static-files.html
普通分类: