django 改了静态文件但是页面没有变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 改了静态文件但是页面没有变相关的知识,希望对你有一定的参考价值。
我修改了项目目录下static文件夹下的css文件,但是页面上还是旧的。咋么回事?
django处理静态文件静态文件指的是js css 还有图片这些,配置方法如下
1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles
然后设置static_url
STATIC_URL = \'/static/\'
2. 在模板中的使用方式如下
% load staticfiles %
<img src="% static "my_app/myexample.jpg" %" />
这种方式提供的是一种相对路径,当你将环境切换到CDN的时候会方便很多
当然也可以用简单一些的方法---直接提供一个静态文件的url,不过在CDN中就要修改才可以使用了
/static/my_app/myexample.jpg
3. 把你的文件都放在一个文件夹下,比如
my_app/static/my_app/myimage.jpg
注:当debug设置True的时候上面的方法可以,但是False的时候会提示not found的错误
当debug设置为Fales的时候,设置方法如下(增加静态文件url,使用 django.contrib.staticfiles.views.serve()来寻找静态文件):
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:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
\'/var/www/static/\',
]
注:django寻找静态文件默认找到地一个就会返回,不再进行后续查找,所以要注意安排顺序及目录
部署的步骤:
1. 设置STATIC_ROOT:
STATIC_ROOT = "/var/www/example.com/static/"
2. 执行collectstatic命令:
$ python manage.py collectstatic
这会把静态文件拷贝到你设置的static_root目录下(这样可以更方便的和nignx集成,权限管理也更方便) 参考技术A 浏览器缓存了,清除浏览器历史,或者清除上网痕迹,忘了强制刷新就可以了,...因为这个我折腾了一下午...orz
nginx,uwsgi,部署django,静态文件不生效问题
打开浏览器,然后访问服务器,如果能够正常访问,并且页面链接可以跳转,但是页面却是乱的,那一定是nginx.conf里面的静态文件配置不正确,
location /static/ {
#expires 30d;
#autoindex on;
#access_log off;
#add_header Cache-Control private;
root /root/project/;
}
#比如我的项目在/root/project/,这里面包含manage.py还有很多app,然后我们需要在settings.py文件增加STATIC_ROOT = os.path.join(BASE_DIR, "static"),
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)
其他的不改动,然后在服务器中的/root/project/目录新建文件夹static,运行python3 manage.py collectstatic,会将所有app中的static中的静态文件拷贝到当前目录static中,留作nginx使用,收集之后,我们需要重启nginx,然后再启动uwsgi,再访问服务器就可以看到样式了。
以上是关于django 改了静态文件但是页面没有变的主要内容,如果未能解决你的问题,请参考以下文章
django -静态文件能加载进入,但是在页面上却显示不出来
在 Heroku 服务器上部署 Django 错误 (500) - 据说是静态文件问题