- 浏览: 567105 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
原文地址:http://blog.csdn.net/wenxuansoft/article/details/8580508
静态文件指像css,js,images之类的文件,在Django里面静态文件的处理与一般的视图是不一样,新手往往容易犯迷糊,本文做一下总结:
一、概述:
静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):
URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.conf里的location
|---------->如果是静态文件,则由nginx直接处理
|---------->如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配
以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法是这样:
1、在INSTALLED_APPS里面加入'django.contrib.staticfiles',
2、在urls.py里面加入
[python] view plaincopy
if settings.DEBUG:
urlpatterns += patterns('', url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),
url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}), )
3、这样就可以在开发阶段直接使用静态文件了。
二、MEDIA_ROOT和MEDIA_URL
而静态文件的处理又包括STATIC和MEDIA两类,这往往容易混淆,在Django里面是这样定义的:
MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义
MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/"),上传的文件就会被保存到c:\temp\media\abc
举个例子:
[python] view plaincopy
[plain] view plaincopy
class blog(models.Model):
Title=models.charField(max_length=64)
Photo=models.ImageField(upload_to="photo")
上传的图片就上传到c:\temp\media\photo,而在模板中要显示该文件,则在这样写{{MEDIA_URL}}blog.Photo
在settings里面设置的MEDIA_ROOT必须是本地路径的绝对路径,一般是这样写
[python] view plaincopy
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT=os.path.join(PROJECT_PATH,'media/').replace('\\','/')
MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:
[python] view plaincopy
MEDIA_ROOT=c:\temp\media\photo
MEDIA_URL="/data/" #可以随便设置
在开发阶段,media的处理由django处理:
访问http://localhost/data/abc/a.png就是访问c:\temp\media\photo\abc\a.png
在模板里面这样写<img src="{{MEDIA_URL}}abc/a.png">
在部署阶段最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,以便能让web服务器能访问media文件
以nginx为例,可以在nginx.conf里面这样:
location ~/media/{
root /temp/
break;
}
具体可以参考如何在nginx部署django的资料。
三、STATIC_ROOT和STATIC_URL、
STATIC主要指的是如css,js,images这样文件,在settings里面可以配置STATIC_ROOT和STATIC_URL,配置方式与MEDIA_ROOT是一样的,但是要注意
STATIC_ROOT与MEDIA_ROOT位置不能一样。
STATIC文件一般保存在以下位置:
1、STATIC_ROOT:在settings里面设置,一般用来放一些公共的js,css,images等。
2、app的static文件夹,在每个app所在文夹均可以建立一个static文件夹,然后当运行collectstatic时,Django会遍历INSTALL_APPS里面所有app的static文件夹,将里面所有的文件复制到STATIC_ROOT。因此,如果你要建立可复用的app,那么你要将该app所需要的静态文件放在static文件夹中。
也就是说一个项目引用了很多app,那么这个项目所需要的css,images等静态文件是分散在各个app的static文件的,比较典型的是admin应用。
当你要发布时,需要将这些分散的static文件收集到一个地方就是STATIC_ROOT。
3、STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
STATIC_URL的含义与MEDIA_URL类似。
四、小结
如果你发生在部署阶段找不到css,js,则可能是以下几个问题:
1、web服务器配置有问题,不同的部署方式对静态文件的处理有所不同。
2、没有运行collectstatic将所需要的静态文件收集到STATIC_ROOT
静态文件指像css,js,images之类的文件,在Django里面静态文件的处理与一般的视图是不一样,新手往往容易犯迷糊,本文做一下总结:
一、概述:
静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):
URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.conf里的location
|---------->如果是静态文件,则由nginx直接处理
|---------->如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配
以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法是这样:
1、在INSTALLED_APPS里面加入'django.contrib.staticfiles',
2、在urls.py里面加入
[python] view plaincopy
if settings.DEBUG:
urlpatterns += patterns('', url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),
url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}), )
3、这样就可以在开发阶段直接使用静态文件了。
二、MEDIA_ROOT和MEDIA_URL
而静态文件的处理又包括STATIC和MEDIA两类,这往往容易混淆,在Django里面是这样定义的:
MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义
MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/"),上传的文件就会被保存到c:\temp\media\abc
举个例子:
[python] view plaincopy
[plain] view plaincopy
class blog(models.Model):
Title=models.charField(max_length=64)
Photo=models.ImageField(upload_to="photo")
上传的图片就上传到c:\temp\media\photo,而在模板中要显示该文件,则在这样写{{MEDIA_URL}}blog.Photo
在settings里面设置的MEDIA_ROOT必须是本地路径的绝对路径,一般是这样写
[python] view plaincopy
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT=os.path.join(PROJECT_PATH,'media/').replace('\\','/')
MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:
[python] view plaincopy
MEDIA_ROOT=c:\temp\media\photo
MEDIA_URL="/data/" #可以随便设置
在开发阶段,media的处理由django处理:
访问http://localhost/data/abc/a.png就是访问c:\temp\media\photo\abc\a.png
在模板里面这样写<img src="{{MEDIA_URL}}abc/a.png">
在部署阶段最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,以便能让web服务器能访问media文件
以nginx为例,可以在nginx.conf里面这样:
location ~/media/{
root /temp/
break;
}
具体可以参考如何在nginx部署django的资料。
三、STATIC_ROOT和STATIC_URL、
STATIC主要指的是如css,js,images这样文件,在settings里面可以配置STATIC_ROOT和STATIC_URL,配置方式与MEDIA_ROOT是一样的,但是要注意
STATIC_ROOT与MEDIA_ROOT位置不能一样。
STATIC文件一般保存在以下位置:
1、STATIC_ROOT:在settings里面设置,一般用来放一些公共的js,css,images等。
2、app的static文件夹,在每个app所在文夹均可以建立一个static文件夹,然后当运行collectstatic时,Django会遍历INSTALL_APPS里面所有app的static文件夹,将里面所有的文件复制到STATIC_ROOT。因此,如果你要建立可复用的app,那么你要将该app所需要的静态文件放在static文件夹中。
也就是说一个项目引用了很多app,那么这个项目所需要的css,images等静态文件是分散在各个app的static文件的,比较典型的是admin应用。
当你要发布时,需要将这些分散的static文件收集到一个地方就是STATIC_ROOT。
3、STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
STATIC_URL的含义与MEDIA_URL类似。
四、小结
如果你发生在部署阶段找不到css,js,则可能是以下几个问题:
1、web服务器配置有问题,不同的部署方式对静态文件的处理有所不同。
2、没有运行collectstatic将所需要的静态文件收集到STATIC_ROOT
发表评论
-
原 异步非阻塞机制与多线程阻塞机制在处理并发耗时等待任务上的效率对比分析
2015-04-21 10:05 698原文地址:http://my.oschina.net/mall ... -
Django报错“_mysql_exceptions.Warning: Incorrect string value: ‘\xE6\xB5…’ for colu
2015-03-25 15:50 1001原文地址:http://www.tuicool.com/art ... -
django使用mysql时的中文存储问题 - [python]
2015-03-25 15:36 1505原文地址:http://www.blogbus.com/831 ... -
NIO学习笔记——解决“服务器端cpu占用率高”
2015-01-29 10:17 992原文地址:http://blog.csdn ... -
python 调用 php 实例
2014-06-23 14:09 2628原文地址:http://hi.baidu.com/ji_hai ... -
php调用python
2014-06-23 14:08 798原文地址:http://blog.163.com/darwin ... -
uwsgi python ssl编译问题记录
2014-06-19 14:24 881uwsgi python ssl编译问题记录 发表于6个月前( ... -
python2.7 安装ssl模块
2014-06-19 14:22 3226python2.7 安装ssl模块 2012-02-28 13 ... -
Centos6.5下升级Python 2.6.6 to python 2.7.3
2014-06-19 13:53 658Centos6.5下升级Python 2.6.6 to pyt ... -
翻译:redis-py 说明文件 (2012-05-30 17:55:52)
2014-06-04 10:22 463翻译:redis-py 说明文件 (2012-05-30 17 ... -
关于Redis的Python客户端的连接池问题
2014-06-04 10:21 627关于Redis的Python客户端的连接池问题 在一 ... -
Windows下 Python 安装包的配置
2014-03-22 10:23 6601、下载安装 Python python-2.7.2.msi ... -
[翻译]深入理解Tornado——一个异步web服务器
2014-03-07 15:16 1647[翻译]深入理解Tornado— ... -
多版本Python共存[支持使用pip安装包]
2014-02-28 10:59 1150多版本Python共存[支持使 ... -
Django 数据库访问性能优化
2013-09-05 15:22 685Django 数据库访问性 ... -
Python六大开源框架对比:Web2py略胜一筹
2013-08-21 11:29 830Python是一门动态、面向对象语言。其最初就是作为一门面向 ... -
Python 代码调试技巧
2013-08-15 18:11 876使用 pdb 进行调试 pdb 是 python 自带的 ... -
python urlencode 编码
2013-07-05 13:28 966urlencode 调用方法 urlencode的参 ... -
window下使用virtualenv
2013-06-30 15:26 1116--- window下使用virtualenv -- ... -
浅析python的metaclass
2013-06-30 11:12 818分享下自己对python的met ...
相关推荐
总结来说,解决Django访问静态文件出错的问题,主要涉及检查`DEBUG`设置、设置`STATIC_URL`和`STATICFILES_DIRS`、配置静态文件查找器以及在Web服务器配置中正确映射静态文件。正确地执行这些步骤将确保你的用户能够...
#### 二、理解Django静态文件处理机制 为了更好地解决问题,首先需要了解Django是如何处理静态文件的。 - **开发环境**:在开发环境下,当`settings.DEBUG = True`时,Django会自动处理静态文件请求。也就是说,...
总结起来,Django的静态文件处理、中间件和上传文件操作是构建高效、安全Web应用的重要组成部分。理解并熟练掌握这些概念,将有助于提升Django项目的质量和用户体验。通过合理配置和利用这些功能,开发者可以创建出...
### Django静态文件配置详解 #### 一、概述 在Django框架中,处理静态文件是一项基本但重要的功能。静态文件通常包括CSS样式表、JavaScript脚本、图像等资源,它们对于构建网页应用至关重要。在Django中,这些静态...
总结一下,Django处理静态文件的两种主要方式是直接在HTML中引用和使用`{% static %}`模板标签。理解并熟练掌握这些方法对于高效地开发和部署Django应用至关重要。同时,合理地组织和管理静态文件,以及正确配置`...
### Django多并发处理详解 #### 一、问题背景与需求分析 在现代Web应用开发中,随着业务量的增长,单一的请求处理模型往往无法满足高并发场景的需求。Django作为一款基于Python的流行Web框架,虽然功能强大且易于...
Django作为一款流行的Python Web框架,提供了高效的方式来处理静态文件。所谓静态文件,通常是指那些不会经常变动的文件,如CSS样式表、JavaScript脚本和图片等。正确加载和管理静态文件对Web应用的性能、安全性和可...
总结来说,Django处理静态文件的流程包括配置静态文件的URL前缀,定义静态文件的来源目录,正确组织静态文件的目录结构,以及在模板中使用`static`标签引用这些文件。在开发过程中,可以使用Django的内置服务器来...
在视图函数中,我们不直接处理静态文件,而是让Web服务器负责。在部署时,应使用collectstatic命令将所有静态文件收集到一个目录,便于服务器服务。 **文件上传** Django提供了强大的文件上传功能。在模型中,我们...
总结来说,Django中的静态文件配置涉及到多个设置项,包括`STATIC_ROOT`、`STATIC_URL`以及`ADMIN_MEDIA_PREFIX`,它们共同确保了静态文件在开发和生产环境中的正确管理和访问。理解这些配置项的工作原理,以及它们...
这个问题主要是由于Django的静态文件处理机制导致的。在深入探讨解决方案之前,我们需要先了解Django的静态文件管理和模板系统的基础知识。 **Django的静态文件管理** Django提供了方便的方式来管理和处理静态资源...
总结来说,Django中引入静态文件涉及创建`static`目录、配置`settings.py`以及在模板中使用模板标签。而从前端提交数据到后端则包括创建HTML表单、定义URL路由和编写处理数据的视图函数。理解并熟练运用这些概念对于...
Django框架作为流行的Python Web开发框架,提供了管理静态文件和媒体文件(如图片、视频)的机制。本文将会详细介绍如何在Django 2.0版本中通过配置settings.py和urls.py来实现静态文件和图片的显示。 首先,我们要...
- **文件结构**: 项目通常遵循标准的Django应用结构,包括`app1`等应用目录,其中包含了模型(models.py)、视图(views.py)、模板(templates)和静态文件(static)等。 - **SETTINGS配置**: Django的settings.py...
在生产环境中,为了提高页面加载速度和安全性,通常不会使用Django来直接服务静态文件,而是将静态文件交给如Apache或Nginx等Web服务器来处理。 1. **配置静态文件路径**:在settings.py中指定STATIC_ROOT为服务器...
### Python + Django 加载静态网页模板解析 ...同时,这也为后续学习更复杂的Django功能(如模型、表单处理等)打下了良好的基础。希望本文能帮助读者更好地理解和掌握如何使用Django加载静态网页模板。
总结一下,Django中管理静态文件的关键在于配置`settings.py`中的`STATIC_URL`、`STATIC_ROOT`、`STATICFILES_DIRS`以及`STATICFILES_FINDERS`。理解这些配置的作用,并正确设置它们,能够确保在开发和部署阶段都...
项目还可能包含了静态文件(如CSS、JavaScript)和媒体文件(用户上传的图片等)。Django提供管理这些文件的方法,确保在生产环境中能正确处理。 最后,Django的Migrations系统用于数据库版本控制,确保开发者在...