导读:今天恰卡编程网来给各位分享关于django如何引入静态文件的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何在django里使用静态文件
推荐用新版本的Django进行开发,可以肯定的是 Django 1.4 以后的版本应该都支持下面的设置
注意:Django 1.4 版本需要在 project/urls.py 底部加上:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()
Django 1.5 - Django 1.8 不需要添加上面的代码。
settings.py 静态文件相关示例代码及说明:
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/' # 当运行 python manage.py collectstatic 的时候# 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 中使用 import xxx 时,找 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 时,打开开发服务器 python manage.py runserver 直接访问 /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中怎么载入css等静态文件
和正常的HTML一样,不过使用Django父子模板,全站、模块、页面三级CSS文件更好布局一点。
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)的静态文件在那个路径下。
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中加入:
django 1.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如何引入静态文件的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~