2024-10-23 12:11:52
导读:今天首席CTO笔记来给各位分享关于django怎么引入静态文件的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django中怎么载入css等静态文件这个问题,在开发环境下和生产环境下解决的方法不一样:开发环境下是在urls.py里面加条语句:比如(r'^static/(?Ppath.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}),这样来做静态文件服务生产环境下,需要把静态文件用collect指令收集起来,部署在专门的前端HTTP服务器比如nginx中,django直观动态请求即可。
django怎么配置可以获取静态文件
可以用服务器配置,js、css、img转到相应路径。也可以在url.py里加入(r'^media/(?Ppath.*)$','django.views.static.serve',{'document_root':settings.STATIC_PATH}),可以在settings.py里设置也可以使用绝对路径。意思是/media/?.(js|css|img|others)的静态文件在那个路径下。
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里使用静态文件推荐用新版本的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媒体文件URL的配置在Django中经常需要配置图片、视频等表态文件,在配置时较为复杂,这里纪录一下:
在文件尾部加入以下目录,用于存放上传的文件
在models中写上image字段其中%Y代表年,%m代表月,blank=True代表可以为空。当上传文件时,代表上传到image目录下,以当前年月子目录的文件夹中。
image=models.ImageField(upload_to="image/%Y/%m",blank=True)
其中src中的{{MEDIA_URL}}会在模板中渲染为第一步中的/media/
如果您想在模板中使用{{MEDIA_URL}},请在“模板”的“context_processors”选项中添加django.template.context_processors.media。
通过以上步骤,基本上可以在前端正常渲染出结果了,但还需要给图片添加一个URL以正常显示。
第一行为引入静态文件的serve,第二行为导入工程配置文件中的MEDIA_ROOT
在url中加入:
Django1.8中应该怎么配置js静态资源1、先在你的app文件中新建一个文件夹static,再分别建立三个子文件夹js,style,images。
2、在settings.py中,加入:
STATIC_URL='/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"static"),
)
3、在html页面头部加入:
{%loadstaticfiles%}
html
head
title麦子学院/title
/head
body
4、
在html模版页面,可以用如下两种方式调用:
imgsrc="{%static'images/logo.gif'%}"alt=""/
imgsrc="/static/images/acer.gif"alt=""/
推荐使用第二种,因为如果图片名称是动态的,可以通过views这么绑定:
imgsrc="/static/images/{{name}}.gif"alt=""/
css的引用同样如此:
linkrel="stylesheet"href="{%static‘style/base.css’%}"type="text/css"
linkrel="stylesheet"href="/static/style/base.css"type="text/css"
js的引用同样如此:
scripttype="text/javascript"src="{%static‘js/jquery-1.8.3.min.js'%}"/
scripttype="text/javascript"src="/static/js/jquery-1.8.3.min.js"/
结语:以上就是首席CTO笔记为大家整理的关于django怎么引入静态文件的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么引入静态文件的相关内容别忘了在本站进行查找喔。