最近无聊在家看看django,在做第七章那个gallery例子的时候,因为我实在windows下鼓弄,在设置图片上传到电脑里那里时,我在setting.py中 将MEDIA_ROOT = 'D:' 设为d盘,然后 model.py中 image=models.ImageField(upload_to='photo')
等我去admin管理页面里添加数据的时候老是报 Attempted access to ‘photo\XXX.jpg’denied
最后一只沿着报错查到了 django.utils._os 中 safe_join 函数
def safe_join(base, *paths):
"""
Joins one or more path components to the base path component intelligently.
Returns a normalized, absolute version of the final path.
The final path must be located inside of the base path component (otherwise
a ValueError is raised).
"""
# We need to use normcase to ensure we don't false-negative on case
# insensitive operating systems (like Windows).
print 'paths:1',paths
base = force_unicode(base)
print 'base:',base
paths = [force_unicode(p) for p in paths]
print 'paths2:',paths
final_path = normcase(abspathu(join(base, *paths)))
print 'final_path:',final_path
base_path = normcase(abspathu(base))
print 'base_path:',base_path
base_path_len = len(base_path)
print 'base_path_len:',base_path_len
print 'final_path[base_path_len:base_path_len+1]:',final_path[base_path_len:base_path_len+1]
print not final_path.startswith(base_path)
print final_path[base_path_len:base_path_len+1] not in ('', sep)
# Ensure final_path starts with base_path and that the next character after
# the final path is os.sep (or nothing, in which case final_path must be
# equal to base_path).
if not final_path.startswith(base_path)\
or final_path[base_path_len:base_path_len+1] not in ('', sep):
raise ValueError('the joined path is located outside of the base path'' component')
return final_path
将所有变量打出来后发现问题出来or final_path[base_path_len:base_path_len+1] not in ('', sep): 这个判断上,sep在windows下是'\\',但是final_path[base_path_len:base_path_len+1]一只是我图片名的第一个字母,所以一直在判断错误,不知道是我自己配置问题还是django的问题,现在吧final_path[base_path_len:base_path_len+1]这个判断注释后,我就上传图片成功了。
最后我用的是python2.5 django1.2.4
分享到:
相关推荐
在Python和Django框架的开发过程中,可能会遇到各种错误,其中"ImportError:无法从'django.utils.encoding'导入名称'force text'"是一个常见的问题。这个错误意味着你的代码尝试从'django.utils.encoding'模块导入...
5. **DjangoBlog**:这可能是项目的主要源代码目录,里面包含了Django项目的各个组件,如models.py(数据模型)、views.py(视图函数)、urls.py(URL路由)、templates(HTML模板)以及settings.py(项目配置)等...
当你尝试运行`python manage.py migrate`命令来同步数据库模型时,如果遇到`django.db.utils.OperationalError: (1045, "Access denied for user ‘账号’@’localhost’ (using password: YES)")`这样的错误,这...
django平台开发视频网站源代码,包括xadmin+django+python完整项目。
django.db.utils.ProgrammingError: (1146, "Table 'test.model_student' doesn't exist" )问题的解决方法,文中将解决的方法介绍的非常详细,需要的朋友可以参考下
【标题】"djangoHotel.tar.gz" 是一个使用Python的Django框架开发的酒店预订管理系统的源代码压缩包。这个系统可能包含了实现酒店预订、管理功能的全部代码和资源,为酒店提供了一套完整的在线预订解决方案。 ...
1. **定义数据模型**:在`models.py`中,通过继承`django.db.models.Model`类,定义数据库表的字段和行为。 2. **数据迁移**:Django的`makemigrations`和`migrate`命令用于创建和应用数据库结构的变化。 3. **...
标题"django-blog.rar_django_django blog"表明这是一个关于使用Django框架开发博客的教程资源,其中可能包含了从基础到实践的详细步骤。"django"是Python的一个流行Web开发框架,而"django_blog"则可能是这个项目...
python web开发 django最好的学习教程 django 推荐书籍
STATICFILES_DIRS = [ os.path.join(BASE_DIR, “statics”),] statices为你所建立的存放静态文件的文件夹名 然后进行引用。 1、html 文件中通过 /static/资源名的方式,就可以访问到资源 2、①html 文件头部填写 ...
django迁移模型常见错误django.db.utils.InternalError: (1050, “Table ‘django_content_type’ already exists”)” 这个问题经常出现在迁移模型时报错,表示该表已经存在,说明之前进行过模型的迁移操作。 例如...
在`context_processors`中包含的'django.template.context_processors.media'是必须的,因为它允许模板访问到`MEDIA_URL`变量,进而正确生成图片的URL。 在应用的URL配置文件(urls.py)中,需要导入`static`函数,...
"Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_...
django 设置settings.py,本文以mysql 为例,说明怎样配置mysql d的连接
在IT行业中,Django是一个非常流行的Python Web框架,它提供了许多强大的功能,其中包括ORM(对象关系映射)系统。ORM允许开发者使用面向对象的方式来操作数据库,而无需编写SQL语句,提高了开发效率和代码的可移植...
* templatetags:处理 Application 的 tag 的 wrapper,就是将 INSTALLED_APPS 中所有的 templatetags 目录添加到 django.templatetags 目录中,则当使用 {{load blog}} 记载 tag 时,就可以使用 import django....
4. **admin_autodiscover**:Django的`admin.autodiscover()`是自动发现并注册应用中所有`admin.py`模块的函数。测试这部分可能涉及到确保所有需要自动发现的管理配置都被正确加载,同时检查在多应用环境中避免重复...
dnsmasq-utils-2.48-13.el6.x86_64.rpm ebtables-2.0.9-6.el6.x86_64.rpm febootstrap-supermin-helper-3.21-4.el6.x86_64.rpm gettext-0.17-16.el6.x86_64.rpm glusterfs-api-3.4.0.57rhs-1.el6_5.x86_64.rpm ...
3. 安装Django,将`site-packages`目录中的`django`文件夹移动到Apache的Python路径下。 4. 创建一个Django项目,并将其设置为Apache的虚拟主机。 5. 使用mod_wsgi配置Apache,指定Django项目的`wsgi.py`文件作为...