导读:很多朋友问到关于django静态文件怎么还能使用的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
如何在django里使用静态文件
推荐用新版本的Django进行开发,可以肯定的是 Django 1.4 以后的版本应该都支持下面的设置
注意:Django 1.4 版本需要在 project/urls.py 底部加上:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()
Django 1.5 - Django 1.8 不需要添加上面的代码。
settings.py 静态文件相关示例代码及说明:
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/' # 当运行 python manage.py collectstatic 的时候# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来# 把这些文件放到一起是为了用apache等部署的时候更方便STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static') # 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"), '/path/to/others/static/', # 用不到的时候可以不写这一行) # 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件# 注意有先后顺序,找到了就不再继续找了STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder")
静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中。
当 DEBUG = True 时,Django 就能自动找到放在里面的静态文件。(Django 通过 STATICFILES_FINDERS 中的“查找器”,找到符合的就停下来,寻找的过程 类似于 Python 中使用 import xxx 时,找 xxx 这个包的过程)。
示例项目 dj18static, 应用 app 下面有一个 static 里面有一个 zqxt.png 图片:
dj18static├── blog│ ├── __init__.py│ ├── admin.py│ ├── migrations│ │ └── __init__.py│ ├── models.py│ ├── static # 应用 blog 下的 static, 默认会找这个文件夹│ │ └── 【zqxt.png】│ ├── tests.py│ ││ └── views.py├── common_static # 已经添加到了 STATICFILES_DIRS 的文件夹│ └── js│ └── 【jquery.js】│├── dj18static│ ├── __init__.py│ ├── settings.py│ ├── urls.py│ └── wsgi.py└── manage.py
当 settings.py 中的 DEBUG = True 时,打开开发服务器 python manage.py runserver 直接访问 /static/zqxt.png 就可以找到这个静态文件。
也可以在 settings.py 中指定所有 app 共用的静态文件,比如 jquery.js 等
STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"),)
把 jquery.js 放在 common_static/js/ 下,这样就可以 在 /static/js/jquery.js 中访问到它!
django 改了静态文件但是页面没有变
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" %}" alt="My image"/
这种方式提供的是一种相对路径,当你将环境切换到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集成,权限管理也更方便)
python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件
在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。
一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。
二、项目配置
1、打开settings.py,在底部添加:
2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):
(不过我经过实测,不加这一个,也可以完成静态文件的访问)
3、在html模板最上面添加:
然后在需要的地方按照这个格式进行调用,如:
最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。
结语:以上就是首席CTO笔记为大家介绍的关于django静态文件怎么还能使用的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。