问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django如何设置静态文件(2023年最新解答)

发布网友 发布时间:2024-10-03 07:55

我来回答

1个回答

热心网友 时间:2024-11-20 18:19

导读:本篇文章首席CTO笔记来给大家介绍有关django如何设置静态文件的相关内容,希望对大家有所帮助,一起来看看吧。

Django中静态文件之各个配置详解

2.STATIC_ROOT:这个是配置静态文件存放目录,另外一个作用就是运行收集静态文件的命令(关于命令的部分后面会讲)时,最终静态文件收集存放的位置,注意,这个配置只会在debug=false时生效(生产环境)(至于为什么之后会讲)。

4.STATICFILES_DIRS:在实际项目开发中,如果我们的静态文件存放在一个或多个目录时,可以定义一个列表,用于存储静态文件,django默认配置并没有这个配置,如果需要,请自己定义,当项目下存在一个或多个静态资源的目录时,非常适合这样定义。注意,这个配置只在debug=true时生效(开发环境)

8.templates:定义HTML模板文件存放目录,如果你用的是pycharm的IDE的话,在创建项目时,可以根据配置自动创建一个templates目录,pycham会自动帮我们配置,如果没有配置,就需要手动创建,当然,你也可以选择自定义该目录

9.collectstatic:在项目部署时,我们还要进行静态文件的收集,如果手动收集静态文件的话,工程量无疑很大,而且部署后,debug肯定要改为debug=false,这时如果不进行静态文件的收集的话,django自带的部分,如admin后台就会出现CSS无法加载的问题,因此,项目部署前,这个操作是是必须的。

django的django.contrib.staticfiles提供了一个收集静态文件的命令:pythonmanage.pycollectstatic,执行该命令后,会将静态文件收集到配置好的STATIC_ROOT中

如何在django里使用静态文件

推荐用新版本的Django进行开发,可以肯定的是Django1.4以后的版本应该都支持下面的设置

注意:Django1.4版本需要在project/urls.py底部加上:

fromdjango.contrib.staticfiles.urlsimportstaticfiles_urlpatternsurlpatterns+=staticfiles_urlpatterns()

Django1.5-Django1.8不需要添加上面的代码。

settings.py静态文件相关示例代码及说明:

#Staticfiles(CSS,JavaScript,Images)

STATIC_URL='/static/'#当运行pythonmanage.pycollectstatic的时候#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中使用importxxx时,找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时,打开开发服务器pythonmanage.pyrunserver直接访问/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中访问到它!

django1.9怎么配置静态文件

想把以前的一个asp.net网站移植到django上,发现django对静态资源似乎支持的不好,不能直接根据相对路径查找,要做一些配置,找了很多解决方案,整理如下:

1、django对静态资源的配置是跟版本有关的!!!切记!!!1.3以前的和以后的配置不太一样!!!下面仅针对Django1.9;

2、settings.py中的installed

apps

要包含'django.contrib.staticfiles';

3、settings.py中的STATIC_URL就是app目录下的静态文件所在文件夹的相对路径,默认为/static/,可以自定义;

4、调用时用如下形式:

{%

load

static

%}

img

src="{%

static

"my_app/myexample.jpg"

%}"

alt="My

image"/

导入js,img等静态文件后报错:

File

"D:\Python27\lib\mimetypes.py",

line

249,

in

enum_types

ctype

=

ctype.encode(default_encoding)

#

omit

in

3.x!

UnicodeDecodeError:

'ascii'

codec

can't

decode

byte

0xb0

in

position

1:

ordinal

not

in

range(128)

[27/Dec/2015

15:26:32]

"GET

/static/assets/img/nextPage_small_grey.jpg

HTTP/1.1"

500

59

找到关键报错文件mimetypes.py,百度了一下,找到了解决方案:在Python安装目录下的lib/site-packages中添加一个文件sitecustomize.py,内容为

import

sys

sys.setdefaultencoding("cp1251")

我设置的编码格式为utf-8,不知道其他格式是否也可以。重启运行,成功。

Django+Vue静态资源问题

使用django2.2。

一般来说,使用指令npmrunbuild得到打包的dist包,交给nginx做路由转换(配置location/static)即可,需要的只是在django配置可访问的index.html路径。

但是由于需要(?),我想在本地进行测试,也就是说在没有nginx,开启debug=True的环境下调试。于是打开pythonmanage.pyrunserver,结果进入首页没有出现欢迎页面,打开devtools,显示是这个样子的:

解决方法:将vue工程文件夹在INSTALLED_APPS里面注册下就行。

如果不注册app,那么即使写入文件夹,django也不会扫描(根目录除外):

如上所示我在STATICFILES_DIR中已经写入了blogfro(也就是vue文件目录)打包完成后的static文件夹,但是进入首页仍然白屏。

白屏表示模板TEMPLATES的路径正常,但是静态文件仍然加载不出来。这就需要注册app。注册后就能够扫描到静态文件。

注册后就成功显示了首页:

在没有加载app时,发现把css与js文件放在一个已经注册app(backend)的静态文件夹中,能够正常显示。这验证了静态文件夹的扫描需要注册app。

以我的项目为例:

在debug模式下,只需要STATIC_URL与STATICFILES_DIR即可。

根据django文档说法,STATIC_URL是路径的映射。服务器会将匹配到它的路径视为静态文件请求,然后进入STATICFILES_DIR指定目录下查找,并总是尝试返回匹配到的第一个结果。

在生产模式下(关闭debug),对静态文件的引用会失效。换句话说,出于性能考虑,我们不使用django服务器进行静态资源请求。我们常使用其他反代服务器进行发送。

出于这个考虑,django使用了collectstatic指令,能将所有STATICFILES_DIR下的文件打包到STATIC_ROOT下。之后只要配置反代服务器应用这个静态文件夹就行了。

之后就能直接对blogfro进行开发了,开发完成后使用npmrunbuild,然后直接开启django服务器就能进行测试。最后打包上线的时候将dist下的内容复制到到STATIC_ROOT下,然后pythonmanage.pycollectstatic(主要是收集admin)的资源。

其实问题不是完全解决,但这是因为vue+django造成的。

django使用自己的静态路径索引,必然有可能与vue发生冲突,为了处理必须进行调试。

使用django与vue,意味着希望进行前后端分离,所以开发过程本身就是隔离的。双方的交集应该是最后部署的时候(vue打包,django开启生产模式,反代服务器开启(如nginx))。这时候静态文件夹归反代服务器管理,不会出现这样的问题。

由于我只有一个人(太惨了),所以产生了同时调试vue与django的需求,这才导致了上面问题的产生。

django前端怎么设置静态文件路径

设置一个路径变量

APP_PATH=os.path.dirname(os.path.dirname(__file__))

#

Absolute

path

to

the

directory

static

files

should

be

collected

to.

#

Don't

put

anything

in

this

directory

yourself;

store

your

static

files

#

in

apps'

"static/"

subdirectories

and

in

STATICFILES_DIRS.

#

注意要修改STATIC_ROOT变量

STATIC_ROOT

=

os.path.join(APP_PATH,'static').replace('\\','/')

#

URL

prefix

for

static

files.

#

Example:

ample.com/static/",

"h

ic.example.com/"

STATIC_URL

=

'/static/'

#

当然还有STATICFILES_DIRS变量

STATICFILES_DIRS

=

(

#

Put

strings

here,

like

"/home/html/static"

or

"C:/www/django/static".

#

Always

use

forward

slashes,

even

on

Windows.

#

Don't

forget

to

use

absolute

paths,

not

relative

paths.

os.path.join(APP_PATH,'mobile_oa_server/static').replace('\\','/'),

)

Django静态文件与动态文件

编辑settings:

MEDIA_ROOT和MEDIA_URL代表的是用户上传后的文件保存的地方。可以理解为存放可变文件的文件夹。

这两个参数有什么用处呢?

在Django的FileField和ImageField这样的Model类中,有upload_to参数可选。当upload_to设置相关的地址后,如例子:

文件上传后将自动保存到:os.path.join(MEDIA_ROOT,upload_to),在本例中就是:/static/uploads/test_pictures

而MEDIA_URL,则代表用户可以通过怎样的URL来访问这些上传后的文件资源。

在本例子中,本机地址是:,MEDIA_URL设置为/static/uploads/

那么通过:文件名就可以访问相关的上传图片或者其他文件。

STATIC_ROOT和STATIC_URL则是网站中,用于网站放置的静态图片、CSS、JS等文件的保存地址。可以理解为,保存网站运行中不会再变文件的文件夹(即不会删除或者新增)

STATIC_URL,同MEDIA_URL类似;设置STATIC_URL为"/static/"时候,通过:文件名就可以访问相关的静态文件了。

STATIC_ROOT是一个比较特殊的文件夹。这是Django的开发模式和部署模式区别最大的地方。

通常我们在开发模式下,可以在我们所在的project下建立相应的app,然后每个app下都建立相应的static文件夹。在开发模式下(Debug=True),Django将为我们自动查找这些静态文件(每个app)并在网页上显示出来。然而,在部署模式下,Django认为这些工作交由web服务器来运行会更有效率。

因此,在部署时,我们需要运行一下:

这个命令将会把每个app里的static目录下的文件copy到STATIC_ROOT这个文件夹下。

如果在部署模式下,即:(Debug=False)访问相关网页,如:文件名,将不会访问Django下各个App中的static文件夹,而是STATIC_ROOT中所指定的文件夹。

为了在部署模式下正确使用,我们还需要在urls.py中添加以下:

这相当于告诉Django碰到一个"static"开头的链接时,该如何处理。

了解完以上之后,我们让图片在前端显示出来。

编写一个show视图函数,来传递动态图片:

然后编写show.html:

结语:以上就是首席CTO笔记为大家整理的关于django如何设置静态文件的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何设置静态文件的相关内容别忘了在本站进行查找喔。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 在QQ空间里发表评论时怎样插入图片? 请问高手,我这铜币值多少人民币? “天成元宝”鎏金币和铜币与拍卖成交品的同宗互证 ...川 光绪年造);想请大家帮忙估值一下,成都有收藏这个? 拼多多吞刀后续还能成功吗?吞刀怎么解决? 拼多多吞刀怎么解决?怎么办? 求萨利机长剧照原图一刻相册资源~跪求!谢谢!!! 抖音不推荐作品给别人怎么设置? 抖音如何隐藏作品不分享给好友? 梦见一个老头儿拿着那种,钻机把自己的手给转进去了,还拿着横钻钻进了... 梦见自己新被子被死老头盖要钱不给? 精酿啤酒在工艺上有什么不同呢? iphone 7plus在不是静音模式的情况下,想要关掉拍照的声音怎么关?_百度... iphone6 plus怎么关闭相机声音 ps怎么把长条章抠出去ps怎么把长条章抠出去图片 ...自己的皮肤有什么不好的地方?有什么副作用没有啊? 光子嫩肤祛痘印有副作用吗?我的脸上有痘印,想做两三次光子嫩肤,请问可 ... 刀剑封魔录装备上的雨花石能不能拆 如何构建搜索引擎的检索式 ...这个课题相关的文献,较好的检索词应该是( )。 django静态文件有哪些(2023年最新整理) 杭州机场有地铁站吗 武汉市公园相亲角都是什么时间段,洪山公园旅游景点 非主流女生有哪些,像张依依、恩典、赵誉博、皮娜那样可爱的。 非主流女生是什么样的 有无类似汪致佳那样的非主流女生 很可爱的一个非主流女生叫什么名字?急急急!!! 非主流可爱小女生叫什么名字? 魔域2.22的存档位置在哪里? 单机魔域2.22版保存的文件怎么找不到啊 Flash魔域2.22存档怎么修改啊 我的个体营业执照忘了年报,过期了4个月,工商局说要罚款才能年报, 如何才能成为体育生? 魔域2.22存档修改 初中没有参加过任何体育比赛,但是想做体育生,学习是一般,可以上高中吗... 女方没有工作,男方在单位交缴生育保险,生完孩子是否可以在男方报销一部... 如何教孩子正确面对竞争,培养公平竞争意识? 北京理工大学珠海学院和上海建桥学院还有电子科技大学中山学院... 借钱通过中间人,中间人只是把钱转交给借款人,没有任何利益沾取,而且... 我到别人借条上,迁上中间人,借款人把我连借款人都起诉到法院,我该要...