[Django1.6]The MEDIA_ROOT and STATIC_ROOT settings must different 解决

项目中有个图片上传的功能,当时为了简单就把上传路径跟静态文件的路径写成了相同的,在wi7的机器上运行没有问题,今天在centos的机器上就报了如下的错误:

django.core.exceptions.ImproperlyConfigured: The MEDIA_ROOT and STATIC_ROOT settings must have different values

google下,直接就到了django的文档中:

MEDIA_ROOT and STATIC_ROOT must
have different values. Before STATIC_ROOT was
introduced, it was common to rely or fallback on MEDIA_ROOT to
also serve static files; however, since this can have serious security implications, there is a validation check to prevent it.

文档中明确的指出MEDIA_ROOT 跟 STATIC_ROOT不能用同一个路径。在STATIC_ROOT么有引进之前使用MEDIA_ROOT路径来存储静态文件的(css,js之类),为了安全。现在基本是使用MEDIA_ROOT
来存储上传文件,STATIC_ROOT来存储静态文件。

解决“:

settings中修改:

把MEDIA_ROOT 定义为别的路径

MEDIA_URL = '/upload/'
MEDIA_ROOT = os.path.join(BASE_DIR,'uploadfiles').replace('\\','/')

然后在全局的urls配置用添加

  url(r'^upload/(?P<path>.*)$','django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),

最后在页面显示图片的地方修改下连接地址就可以了。

<a href="/upload/{{ user.userinfo.license }}" target="_blank">查看</a>

基本上就这个三个步骤,就能替换原来的存储路径了。

本文出自 “orangleliu笔记本”博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/40542099

作者: orangleliu

时间: 2024-07-29 11:14:50

[Django1.6]The MEDIA_ROOT and STATIC_ROOT settings must different 解决的相关文章

media_root以及static_root配置

# At the top of settings/base.pyfrom os.path import join, abspath, dirnamehere = lambda *x: join(abspath(dirname(__file__)), *x)PROJECT_ROOT = here("..", "..")root = lambda *x: join(abspath(PROJECT_ROOT), *x)# Configuring MEDIA_ROOTMED

MySQL安装过程中出现“APPLY security settings错误”的解决方式

***********************************************声明****************************************************** 原创作品,出自 "晓风残月xj" 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj). 因为各种原因.可能存在诸多不足,欢迎斧正. *******************************************

Python3.5 + django1.8.5 安装&rdquo;import pymysql pymysql.install_as_MySQLdb()&rdquo;的解决方法

最近在学习Python,打算先看两个在线教程,再在github上找几个开源的项目练习一下,在学到"被解放的姜戈"时遇到django同步数据库时无法执行的错误,记录一下. 错误现象: 执行python manage.py syncdb时,报错:Error loading MySQLdb module: No module named 'MySQLdb' 经过上网搜索得知,MySQLdb并不支持Python3.5,因此只能找别的类库代替. 解决方法: 使用pymysql代替MySQLdb,

使用Django1.10版本时,配置文件要注意的地方

问题一描述: Django1.10版本中框架中settings.py配置文件 DEBUG= True ALLOWED_HOSTS = ['*'] #这样可以让所有来源的ip访问到后台 使用 python3 manager.py runserver后访问,发现没有css,js样式. 网上查询得知:Django1.9版本后静态文件目录需要创建.大概的意思就是在settings.py文件中添加一下配置部分: PROJECT_ROOT = os.path.dirname(os.path.abspath(

django模板报错:Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define

转自:http://blog.csdn.net/xiaowanggedege/article/details/8651236 django模板报错: Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before a

django核心配置项

Django的默认配置文件中,包含上百条配置项目,其中很多是我们‘一辈子’都不碰到或者不需要单独配置的,这些项目在需要的时候再去查手册. 强调:配置的默认值不是在settings.py文件中!不要以为settings.py中的配置值就是默认值,参考前文.settings.py是使用django-admin startproject xxx命令时,额外给我们创建的. 下面介绍的是61个相对比较常用和重要的配置项,按字母顺序排序,但是最后部分是cache.auth.message.session.s

ueditor用法

settings里设置好media_root import osHERE = os.path.dirname(os.path.dirname(__file__)) MEDIA_ROOT = os.path.join(HERE, "media").replace('\\', '/') MEDIA_URL = "/site_media/" models里面使用字段 content = UEditorField(u"内容", imagePath=&qu

Django static静态配置文件

对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件.为了使Django开发环境能够处理静态文件,Django有和生产环境不同的静态文件配置方式. Django 版本:1.10 开发(Dev)环境配置 一.STATIC_URL, STATICFILES_DIRS, STATIC_ROOT1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等2. 确保settings.py中的INSTALLED_AP

Django_collections01

python manage.py flush python manage.py changepassword username python manage.py createsuperuser python manage.py dumpdata appname > appname.json python manage.py loaddata appname.json python manage.py shell #coding:utf-8 from django.shortcuts import