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

django如何使用静态文件(nginxdjango静态文件)

发布网友 发布时间:2024-10-08 19:39

我来回答

1个回答

热心网友 时间:2024-10-26 18:29

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

如何在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中访问到它!

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静态文件与动态文件

编辑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如何使用静态文件的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
日本最厉害的神叫什么?形象又是什么样的? 我是1995年的,我是几岁上的小学啊? 95年大学毕业于哪一年几月份 1995年生的孩子几岁上小学,中学,高中 叶罗丽时辰砂兑换码大全 叶罗丽精灵梦礼包哪里领 礼包领取兑换地址大全 叶罗丽彩妆公主怎么玩_叶罗丽彩妆公主玩法大全 叶罗丽小游戏大全(叶罗丽小游戏大全换装游戏) 港式碗仔翅的烹饪秘诀有哪些呢? ...三个月的机械键盘有一些键失灵了 用回以前的键盘普通键盘就可以用... 想干仿真花加工,pu仿真花加工,但是不知道从哪做起,没有门路,知道可以说 ... ...成的角度是多少度? 最好有公式和办法 初中一年级,请说的简单一点 谢... 可是豌豆荚下载软件后,放在内存卡里,手机也找不到,我没有程序安装... 在手机上下了摸手安装管理器.. 安装的软件 无法移到SD卡 软件是之前在... 招财树怎么插枝图解 怎样从豌豆荚里设置下载一个应用后直接下载到cd卡里 招财树如何插 科鲁兹掀背车打火打不着怎么办 12款科鲁兹跑跑突然不提速踩油门转速猛涨,速度上不去,检查出一档电磁阀... 科鲁兹行驶中突然熄火,abs指示灯亮,电瓶有电,发动机不着火? 涂料有没有甲醛的问题?刷过之后多久才能够入住? 科鲁兹09款自动挡 行驶中转速突然到零 行驶正常 可熄火后打火困难 五 ... 指甲油是怎么做的 出门看到螃蟹代表什么 投入资本算什么科目 word里怎么打"任取"符号 买书去哪个网站比较便宜 医学生感觉前途迷茫,有没有大佬现身说法 客厅水晶灯变脏怎么办 客厅水晶灯怎么清洗 如何清洁客厅灯 求小说(不为人知的触碰续)全文+番外。。。872065107@qq.com 说说心情短语幸福 不是所有笑容都很由衷,不是所有坚持都很轻松_百度... 路由器都有300兆等等这些速度,光猫也有,那宽带猫和交换机有这个的参数... 星星冷柜起动后再停机有蹦哒声怎么回事?且频繁起动! 星星冷柜运行不会停不下来运行指示灯已坏 机械手表如何保养?机械表的十个简单保养方法 斗鲳鱼为何会成为珍稀高价鱼类? 肠子不好都有哪些症状呀!例如总往厕所跑该怎么确定?该怎么办? 日常怎么保养机械手表? 我家一间寝室的墙面刷了大概3个平方的油漆多长时间能够入住 小肚子总是疼 感觉宁的疼 还好像有点肚肠子疼怎么回事啊。去医院体检... 自动机械表要如何保养 肚子疼是胃病还是肠子有问题-肚子疼是新型冠状病毒的症状吗 【急】经常性腹泻的原因 vovoX27如何把云端数据考到移动卡上? 百色市住房公积金如何缴纳的? 淘宝想要绑定一张银行卡,银行卡户主必须和淘宝帐号注册是是一个人... 安全标志图片大全是什么? 2024上海高温津贴的发放标准是什么? 陕西高温补贴发放标准2024是什么?