Django static静态配置文件

对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件。为了使Django开发环境能够处理静态文件,Django有和生产环境不同的静态文件配置方式。

Django 版本:1.10

开发(Dev)环境配置

一、STATIC_URL, STATICFILES_DIRS, STATIC_ROOT
1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等
2. 确保settings.py中的INSTALLED_APPS中包含django.contrib.staticfiles,以及Debug为True
3. 设置settings.py中的STATIC_URL的值为“/static/”,作用参考5
4. 在模版开头{% load static %}之后,在模版中使用{{ STATIC_URL }}作为静态文件路径前缀。比如css文件your_app/static/css/bootstrap.min.css,那么应用代码为<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
5. 可以测试单独通过url访问静态文件(http://127.0.0.1:8000/static/css/bootstrap.min.css)

6. STATICFILES_DIRS用来配置一些额外的静态文件的地址,如下配置。模版中访问的时候,参考4即可。

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    ‘/var/www/static/‘,
]

7. STATIC_ROOT, 设置绝对路径, 在collectstatic运行的时候会把静态文件拷贝到这个目录中,其更多的作用是在从开发环境到生产环节过程中移植静态文件。

二、MEDIA_ROOT和MEDIA_URL
MEDIA_ROOT:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义MEDIA_ROOT=‘/Users/xxx/media/‘,那么File=models.FileField(upload_to="app01/pic"),上传的文件就会被保存到‘/Users/xxx/media/app01/pic‘
MEDIA_URL:URL的映射,前后要加上‘/’ 表示从根目录开始,比如“/site_media/”,加上这个属性之后,静态文件的链接前面会加上这个值。

1. 在settings文件中设置MEDIA_URL,比如MEDIA_URL=‘/media/‘

2. 在settings文件中设置MEDIA_ROOT,可以是任意位置(不与STATIC_ROOT相同),用于保存上传的文件

3. urls文件中配置如下,

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

4. 在settings文件中,TEMPLATES中‘context_processors‘下面新增‘django.template.context_processors.media‘

配置好后可以使用浏览器访问上传的文件, http://ip:port/MEDIA_URL/upload_path/file. 比如MEDIA_URL设置的是‘/media/‘,MEDIA_ROOT设置的是‘/User/xxx/‘,在models中设置的文件上传到(upload_to=)‘app01/pic‘,那么文件上传后实际存储地址为/User/xxx/app01/pic. 通过URL访问的话:http://ip:port/media/app01/pic/test.jpg. 在前端模版中访问这个上传的图片: <img src="{{ MEDIA_URL }}app01/pic/test.jpg"">

更多参考官方文档

生产环节部署

在部署阶段最大的不同在于你必须让web服务器来处理静态文件,因此你必须在web服务器中配置,以便能让web服务器能访问静态文件。官方文档参考这里。后面会在自己试验过后补充自己的备注。

时间: 2024-11-09 00:52:18

Django static静态配置文件的相关文章

django关闭DEBUG后 static静态文件都访问不了

Django框架仅在开发模式下提供静态文件服务.当我开启DEBUG模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭DEBUG模式后,Django便不提供静态文件服务了.想一想这是符合Django的哲学的:这部分事情标准服务器都很擅长,就让服务器去做吧! OK,解决问题的办法也就出现了,我最开始想到的就是,使用项目正式部署是所使用的配置,由apache提供静态文件服务.不过解决问题的方法远不止一种,在stackoverflow上我发现了更有趣的方法.

django 中静态文件项目加载问题

问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件.整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与.我写的部分的js代码遇到点问题,修改了相应的代码后整个项目没有按照我的设想改变. 解决: 在项目中执行 python manage.py collectstatic 该命令收集项目下的静态文件,统一保存到 项目配置文件下的STATIC_ROOT.以重新加载静态文件. 原文地址:https://www.c

Django之静态文件配置

在项目目录中打开settings.py,在最下面配置静态文件(css文件,js文件以及其他静态配置文件),比如说html使用到了jQuery框架,我们要在项目根目录下创建statics(可自定义),将jQuery文件放在该目录下,打开settings.py,最下面有一个变量STATIC_URL,新建一个列表为:STATICFILES_DIRS,将静态文件目录放在该列表中: # settings.py # 下面两个变量是配合使用的 STATIC_URL = '/static/' #别名,Djang

Django框架静态文件配置和URL解析

静态文件配置 1:#在django项目下创建一个static静态文件文件夹,在static文件夹下创建对应的css,img,js文件夹,用来存放css样式文件,图片和js代码,用于HTML引入 2:#在django项目的settings配置文件中,配置静态文件相关配置(setting文件的最下面) STATIC_URL = '/static/' #静态文件的文件路径别名,别名可以改,一般不改 STATICFILES_DIRS = [ #静态文件的文件路径,就是创建的static的静态文件夹路径,

django中静态文件路径配置

#环境:ubuntu12.04+python27+django1.4.2+[ngix]+fastcgi; #如果经过ngix服务器的话无疑可以在任意位置放置,只要在ngix中配置相关的路径文件,但很多时候在调试时我们不想经过ngix服务器,那就需要对django进行静态文件的路径配置. #首先我想把我的静态文件放在项目的根目录下,创建一个static的文件夹,为了便于显示效果,我在static下放置了一个sa.txt文件,里面随意写一些内容! #文件目录如图所示: #打开settings.py文

django处理静态文件

转载自 http://www.cnblogs.com/wswang/p/5519101.html 静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles 然后设置static_url 1 STATIC_URL = '/static/' 2. 在模板中的使用方式如下 1 2 {% load staticfiles %} <img src="{% static

apache上部署django的静态文件

一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一种就是部署在django上, 另外一种 是部署在apache 上, 前一种方法有一定的缺陷, 效率不高, 而且会造 成一定的安全威胁, 具体我也不知道, 大家可以看官方文档, 但是还是 向大家介绍一下. 可以在你的项目下建一个static目录, 在settings.py 中添加: #填写你静态文件的

Django2_MVC(MTV)模型、常用简单命令、项目目录文件说明及static静态文件

一.MVC.MTV模型著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起.模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求.Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:Model(模型):负责业务对象与数据库的对象(ORM)Templat

django STATIC/MEDIA配置

配置示例 # setting.py配置如下 ## 访问 http://IP/static/***.css STATIC_URL = '/static/' ## python manage.py collectstatic时,把所有静态文件聚集到此目录下 STATIC_ROOT = os.path.join(BASE_DIR, 'static') ## 放置公共静态目录,jQuery.css这些公共静态文件 STATICFILES_DIRS = ( os.path.join(BASE_DIR, '