Django部署时静态文件配置的坑

Django部署时静态文件配置配置的坑

近期有个需求是用django进行开发部署,结果发现静态文件配置的坑是真的多,另外网上很多的内容也讲不清楚原理,就是这样这样,又那样那样,进了不少坑,这里记录一下关于css,img,js这些静态文件的坑。

正确配置

这里先上正确的配置,感兴趣或者遇到问题了可以仔细往下看各种坑的情况。

1、项目setting.py的配置

DEBUG=True

改为

DEBUG=False

把原先的

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

改为

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

此处介绍一下我的项目结构

Django项目
Django appstatic目录

static目录下面

static目录
css目录(里面是.css文件)js目录img目录

2、项目urls.py的配置

注意是项目下的,不是app下面的哈!!!!!!因为太多的文章不标明,我当时写到app下的urls.py去导致正常开发好的HTML页面根本加载不了上面那些静态文件!

方法1

from django.views.static import serve
from django.cong import settings
from django.cong.urls import urlurlpatterns = [
...
# 加在里面
url(r"^static/(?P<path>.*)$", serve, {"document_root": settings.STATIC_ROOT}, name='static')
]

方法2

from django.conf.urls.static import static
from django.cong import settingsurlpatterns = [
...
]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

注意两处只是方法不同,仔细看一下,其实改的是相同的配置,就是把静态文件的根目录加入到要部署的Django环境中

2、静态文件的收集

注意此处不是所有项目都需要的哈,这也是很多人没有写清楚的一点是,下面这个命令是用来将静态文件收集到指定的目录中,在上面的代码配置下,所有的静态文件将会收集到我项目的static文件中(主要是admin页面的img,css,js等等,会从Django的库目录收集到我们的项目目录中),但是因为我的项目并没有用到admin页面的相关内容,而是自己写了HTML和样式表等各种静态文件,所以我可以不执行,但是部署的话,如果有需要用到admin页面的相关内容,就要执行,上代码!

python manage.py collectstatic

未说明的 一些坑

1、静态文件被收集到项目所在的磁盘static目录下

例如D盘,D:\static,因为不少博主在写的时候说

os.path.join(BASE_DIR, '/static'# 错误
os.path.join(BASE_DIR, '/static/'# 正确

但这其实就是个坑,会把项目所有用到的静态文件移动到D:\static下面,因为join函数的第二个函数如果是‘/’开头的话,就会忽略掉前面的内容,直接就是项目所在的磁盘下直接建立static文件了,这个可以在setting中把配
置给print出来看到。正确的就是

os.path.join(BASE_DIR, 'static'

只是呢,STATICFILES_DIRS这个配置需要注释掉, 这个是在调试的时候声明的环境,会把里面的内容打包到STATIC_ROOT的环境中,因此没有注释的话还会报错说STATIC_ROOT不能出现在STATICFILES_DIRS中,结合上面的join的坑,这里真的是待了半天多,害。

2、补充一下运行上面 python manage.py collectstatic的结果

正确的情况下,收集到是什么样子的。
在这里插入图片描述
其中1是从Django库里收集来的,2是我自己写的,如果用了Django中比较多的模版作为自己的开发静态文件,迁移过来使用就是必须要的。

补充一下静态文件没能成功加载的情况

在这里插入图片描述
是的,就是Django账号密码登录后的默认首页,没有静态文件装饰是真的臭!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm使用国内淘宝镜像的方法

一、通过命令配置 1、设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org/2、设置官方镜像源 npm config set registry https://registry.npmjs.org3、查看镜像使用状态&#xff1a; npm config get registry二、通过使用cnpm安装 1、安装cnpm npm …

C#中.NET Framework4.8 Windows窗体应用通过EF访问新建数据库

目录 一、 操作步骤 二、编写EF模型和数据库上下文 三、 移植&#xff08;Migrations&#xff09;数据库 四、编写应用程序 五、生成效果 前文已经说过.NET Framework4.8 控制台应用通过EF访问已经建立的和新建的数据库。 本文想说的是&#xff0c;.NET Framework4.8 Win…

MySQL优化(1):B+树与索引

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 对于60%的程序员而言&a…

springboot-RedisTemplate

pom.xml: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

学习c#的第十九天

目录 C# 特性&#xff08;Attribute&#xff09; 规定特性&#xff08;Attribute&#xff09; 预定义特性&#xff08;Attribute&#xff09; 创建自定义特性&#xff08;Attribute&#xff09; C# 特性&#xff08;Attribute&#xff09; 特性&#xff08;Attribute&…

嵌入式QTGit面试题

自己在秋招过程中遇到的QT和嵌入式和Git相关的面试题&#xff0c;因为比较少就一起放了 QT connect第5个参数是什么&#xff1f; Qt::AutoConnection&#xff1a; 默认值&#xff0c;使用这个值则连接类型会在信号发送时决定。 如果接收者和发送者在同一个线程&#xff0c;则…

【机器学习】决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择

1. 决策树概念 通过不断的划分条件来进行分类&#xff0c;决策树最关键的是找出那些对结果影响最大的条件&#xff0c;放到前面。 我举个列子来帮助大家理解&#xff0c;我现在给我女儿介绍了一个相亲对象&#xff0c;她根据下面这张决策树图来进行选择。比如年龄是女儿择偶更…

0068【Edabit ★☆☆☆☆☆】I‘d Like a New Shade of Blue, Please

0068【Edabit ★☆☆☆☆☆】I’d Like a New Shade of Blue, Please math numbers Instructions I have a bucket containing an amount of navy blue paint and I’d like to paint as many walls as possible. Create a function that returns the number of complete wal…

【如何学习Python自动化测试】—— 自动化测试环境搭建

1、 自动化测试环境搭建 1.1 为什么选择 Python 什么是python&#xff0c;引用python官方的说法就是“一种解释型的、面向对象、带有励志语义的高级程序设计语言”&#xff0c;对于很多测试人员来说&#xff0c;这段话包含了很多术语&#xff0c;而测试人员大多是希望利用编程…

CLEARTEXT communication to XX not permitted by network security policy 报错

在进行网络请求时&#xff0c;日志中打印 CLEARTEXT communication to XX not permitted by network security policy 原因&#xff1a; Android P系统网络访问安全策略升级&#xff0c;限制了非加密的流量请求 Android P系统限制了明文流量的网络请求&#xff0c;之下的版本…

和鲸科技创始人范向伟受邀出席“凌云出海,来中东吧”2023华为云上海路演活动

11月9日&#xff0c;华为云“凌云出海&#xff0c;来中东吧”系列路演活动第二场在上海正式开启。聚焦“创业全球化”&#xff0c;本次活动由华为云携手阿布扎比投资办公室&#xff08;ADIO&#xff09;举办&#xff0c;旨在与渴望出海发展的优秀创业者们共探出海中东新商机。 …

【GAN】数据增强基础知识

最近要用到&#xff0c;但是一点基础都没有&#xff0c;故开个文章记录一下笔记 目录 GAN DCGAN WGAN EEGGAN GAN 参考 生成对抗网络&#xff08;GAN&#xff09; - 知乎 (zhihu.com) 文章 [1406.2661] Generative Adversarial Networks (arxiv.org) 代码 GitHub - …

Vue3-watchEffect函数

Vue3-watchEffect函数 功能&#xff1a;watchEffect 函数在一开始时就会执行一次&#xff0c;而当中的回调函数的属性发生变化&#xff0c;那么watchEffect 就会再执行一次&#xff0c;主要作用还是在于监视回调函数每次的变化。 // App.vue <template><h2>计数…

传输层安全协议TLS——密码学概述

文章目录 一、TLS1.3基础理论知识二、TLS机密性三、TLS1.3 密钥配送四、TLS1.3 消息完整性五、TLS1.3 身份验证与中间人攻击 一、TLS1.3基础理论知识 TLS 1.3 是一种用于保障网络通信安全的协议&#xff0c;它是 TLS&#xff08;Transport Layer Security&#xff09;协议的最…

一个美观且功能丰富的 .NET 控制台应用程序开源库

推荐一个美观且功能丰富的 .NET 控制台应用程序开源库&#xff0c;从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库&#xff0c;用于创建美观、功能丰富的控制台&#xff08;命令行&#xff09;应用程序。它提供了一组易于使用的 API&#xff0c;…

VScode 配置用户片段

文件->首选项->配置用户片段->新建全局用户片段 后续就可以通过vv3来直接生成下面的代码 {// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the l…

阿里云崩了,总结我们从云上搬到线下经历了什么

我们做钢铁行业云的时候&#xff0c;也曾购买过某讯的云服务器。当时某讯做活动&#xff0c;头3年比较便宜&#xff0c;大概买了40台左右云服务器。 但是&#xff0c;3年期间使用云服务器的经历&#xff0c;体验并不好&#xff1a;1.我们云服务器的密码都是随机生成的&#xff…

Shell 使用日期或计数器 命名 文件

date获取系统时间&#xff0c;"%Y_%m_%d_%H_%M_%S"指定格式&#xff0c;$time 输出时间&#xff0c; ~/Desktop/ $newFile指定位置下的文件夹 #!/bin/bashtime$(date "%Y_%m_%d_%H_%M_%S") newFile$time".log" echo $time > ~/Desktop/$newF…

多视图聚类的论文阅读

当聚类的方式使用的是某一类预定义好的相似性度量时&#xff0c; 会出现如下情况&#xff1a; 数据聚类方面取得了成功&#xff0c;但它们通常依赖于预定义的相似性度量&#xff0c;而这些度量受原始方法的影响:当输入维数相对较高时&#xff0c;往往是无效的。 1. Deep Mult…

C++ 编写动态二维double型数据类Matrix

【问题描述】 编写一个程序&#xff0c;定义一个安全、动态二维double型的数组类Matrix。 实现Matrix table(row,col)定义row行col列的二维数组, row和col为正整数&#xff1b;实现table(i,j)访问table的第i行第j列的元素&#xff0c;行号和列号从0开始&#xff1b;实现Matri…