如题所述
本篇文章首席CTO笔记来给大家介绍有关djangostatic在哪里以及django部署的相关内容,希望对大家有所帮助,一起来看看吧。
可能是浏览器使用缓存了。
按住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在开发环境下怎么配置吧。
这次主要拿Django1.4版本来做配置,这个要事先声明,因为1.4以后,Django的项目结构发生很大的变化,如果下面的配置做法放到Django1.3上肯定不适应了,值得注意哦。staitc的配置只要在settings.py里做即可。
DEBUG=True
这个设定环境是处在开发环境下。
然后自己建立一个变量SITE_ROOT,变量不是必须的,只是为了方面重用,名字可以随意起。
importos
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文件夹在项目里,有cssjsimages三个文件夹(看项目结构),他们的路径分别是:
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讲解吧。
!DOCTYPEhtml
htmllang="zh-CN"
head
metacharset=utf-8
titlestaitc例子/title
linkrel="stylesheet"type="text/css"href="{{STATIC_URL}}css/style.css"media="screen"/
scripttype="text/javascript"src="{{STATIC_URL}}js/jquery.js"/script
/head
body
imgsrc="{{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就不再通过自己来处理静态页面了,最后静态文件都交给NginxApache来处理了。
说说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中做修改。别忘了importsettings):
(不过我经过实测,不加这一个,也可以完成静态文件的访问)
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=(
#Putstringshere,like"/home/html/static"or"C:/www/django/static".
#Alwaysuseforwardslashes,evenonWindows.
#Don'tforgettouseabsolutepaths,notrelativepaths.
os.path.join(BASE_DIR,"assets"),
)
结语:以上就是首席CTO笔记为大家整理的关于djangostatic在哪里的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django部署、djangostatic在哪里的相关内容别忘了在本站进行查找喔。
logo设计
创造品牌价值
¥500元起
APP开发
量身定制,源码交付
¥2000元起
商标注册
一个好品牌从商标开始
¥1480元起
公司注册
注册公司全程代办
¥0元起
查
看
更
多
- 官方电话官方服务
- 官方网站八戒财税知识产权八戒服务商企业需求数字市场