欢迎各位兄弟 发布技术文章
这里的技术是共享的
静态文件是指 网站中的 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 部署