首页>>后端>>Python->djangostatic在哪里(django部署)

djangostatic在哪里(django部署)

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

本篇文章首席CTO笔记来给大家介绍有关djangostatic在哪里以及django部署的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、django static文件路径问题2、django为什么要配置static3、python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件4、Django 静态文件与动态文件5、django怎么设置static

django static文件路径问题

可能是浏览器使用缓存了。

按住ctrl+f5,强制浏览器刷新css和js文件......

如果还不行,就到Django从入门到精通这里找找看,有没有解决办法。

django为什么要配置static

如果简单使用static,配置起来会比media要少一步,下面会比较一下。说到static,不能不说说Django开发环境和部署环境的区别,Django配置文件settings.py里的DEBUG变量就是主要的区别, DEBUG=True,说明是在开发环境(调试模式)下,DEBUG=False反之是在正式部署环境下使用。两者有很大的区别,比如缓存,出错信息的方式等等,还有今天说的静态文件的处理方式上。开发环境下静态文件都是通过Django自带的web服务器来处理的(这样会更方面)。如果把DEBUG设置成False,那么Django自带的web服务器自然不处理静态文件了,静态文件都交给nginx,apache来处理吧(这样会更高效)。

具体说说static在开发环境下怎么配置吧。

这次主要拿Django 1.4版本来做配置,这个要事先声明,因为1.4以后,Django的项目结构发生很大的变化,如果下面的配置做法放到Django 1.3上肯定不适应了,值得注意哦。staitc的配置只要在settings.py里做即可。

DEBUG=True

这个设定环境是处在开发环境下。

然后自己建立一个变量SITE_ROOT,变量不是必须的,只是为了方面重用,名字可以随意起。

import os

SITE_ROOT=os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')

变量值项目的根目录,也就是settings.py的存放位置。

然后给静态文件变量赋值,告诉Django,静态文件在哪里

STATIC_ROOT = os.path.join(SITE_ROOT,'static')

说到这里,我还是说说项目文件结构吧,这个容易蒙人,比如这次的讲的项目结构如下:

myproject

----myproject

--------__init__.py

--------settings.py

--------urls.py

--------wsgi.py

----blog

--------__init__.py

--------models.py

--------views.py

--------test.py

----static

--------css

------------style.css

--------js

------------jquery.js

--------images

------------me.jpg

----media

--------upload

注意项目的结构,你会发现SITE_ROOT就是

myproject

----myproject

的路径。

STATIC_ROOT就是

myproject

----media

的路径。

好,接着配置说

STATIC_URL = '/static/'

给静态文件url一个后缀,在templates里用到的。

最后关键的部分是STATICFILES_DIRS以下配置

STATICFILES_DIRS = (

("css", os.path.join(STATIC_ROOT,'css')),

("js", os.path.join(STATIC_ROOT,'js')),

("images", os.path.join(STATIC_ROOT,'images')),

)

简要说一下,static文件夹在项目里,有css js images 三个文件夹(看项目结构),他们的路径分别是:

os.path.join(STATIC_ROOT,'css'),os.path.join(STATIC_ROOT,'js'),os.path.join(STATIC_ROOT,'images');

我们分别给他们起三个别名css,js,images(你可以随意给,不过为了易记,我们原名称指定别名了)

到这里staitc算是配置完成了,并不需要再urls.py里配置相关的东西,Django就会自动找到对的路径解析静态文件了,也是在配置上static比media少了一步。

配置好了,在templates 就能正常使用静态文件了。怎么用?拿一个templates讲解吧。

!DOCTYPE html

html lang="zh-CN"

head

meta charset=utf-8

titlestaitc例子/title

link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/style.css" media="screen" /

script type="text/javascript" src="{{STATIC_URL}}js/jquery.js"/script

/head

body

img src="{{STATIC_URL}}images/me.jpg"" alt="img"

/body

/html

注意{{STATIC_URL}}就是取配置文件settings.py里的STATIC_URL变量,解析出来的就是:/static/。

而{{STATIC_URL}}css/style.css最终解析出来的就是我们想要的:/static/css/style.css,Django会根据配置文件找到相应的文件。

快到尾声的时候,讲讲正式部署环境怎么设置吧:

DEBUG=False

首先把DEBUG设置为False,告诉Django环境是正式的非调试模式下了,然后Django就不再通过自己来处理静态页面了,最后静态文件都交给Nginx Apache来处理了。

说说Nginx怎么配置,才能正确解析静态文件吧,在一个server里添加一个location静态文件处理

location /static/ {

root /home/www-data/twogoo/myproject/;

}

这个也有一个容易犯错的地方,就是路径,有的同学常常指定这样的路径:/home/www-data/twogoo/myproject/staitc/;这样Nginx应该找不到静态文件的,因为Nginx会跑到/home/www-data/twogoo/myproject/staitc/staitc/路径里找,注意这点,静态文件处理上你会顺很多。

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等文件了。

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 :

django怎么设置static

主要就下面这些吧:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR,"static")

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(BASE_DIR,"assets"),

)

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


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