首页>>后端>>Python->django静态文件怎么还能使用(2023年最新整理)

django静态文件怎么还能使用(2023年最新整理)

时间:2023-12-25 本站 点击:0

导读:很多朋友问到关于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静态文件怎么还能使用的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/59889.html