转载自 http://www.cnblogs.com/wswang/p/5519101.html
静态文件指的是js css 还有图片这些,配置方法如下
1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles
然后设置static_url
1
|
STATIC_URL = '/static/' |
2. 在模板中的使用方式如下
1
2
|
{ % load staticfiles % } <img src = "{% static " my_app / myexample.jpg " %}" alt = "My image" / > |
这种方式提供的是一种相对路径,当你将环境切换到CDN的时候会方便很多
当然也可以用简单一些的方法---直接提供一个静态文件的url,不过在CDN中就要修改才可以使用了
1
|
/ static / my_app / myexample.jpg |
3. 把你的文件都放在一个文件夹下,比如
1
|
my_app / static / my_app / myimage.jpg |
注:当debug设置True的时候上面的方法可以,但是False的时候会提示not found的错误
当debug设置为Fales的时候,设置方法如下(增加静态文件url,使用 django.contrib.staticfiles.views.serve()来寻找静态文件
):
1
2
3
4
5
6
|
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # ... the rest of your URLconf goes here ... ] + static(settings.STATIC_URL, document_root = settings.STATIC_ROOT) |
注:也不推荐实际环境中用
当你有多个静态文件目录的时候可以使用下面的方式,设置STATICFILES_DIRS:
1
2
3
4
|
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static" ), '/var/www/static/' , ] |
注:django寻找静态文件默认找到地一个就会返回,不再进行后续查找,所以要注意安排顺序及目录
部署的步骤:
1. 设置STATIC_ROOT:
1
|
STATIC_ROOT = "/var/www/example.com/static/" |
2. 执行collectstatic命令:
1
|
$ python manage.py collectstatic |
这会把静态文件拷贝到你设置的static_root目录下(这样可以更方便的和nignx集成,权限管理也更方便)
参考链接见(django文档最详细):
http://blog.csdn.net/WaitForFree/article/details/39815507
http://blog.sina.com.cn/s/blog_6c663fa50101gope.html
https://docs.djangoproject.com/en/1.9/howto/static-files/
https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#django.contrib.staticfiles.views.serve