为什么Django在保存文件时添加错字?

时间:2019-02-21 15:29:42

标签: python django

我正在为我使用Django开发的项目编写一些测试代码。测试代码如下:

from django.test import TestCase, override_settings
from django.core.files import File
import sys
import os

from .models import Manual

@override_settings(MEDIA_ROOT=os.getcwd()+'/temp/django_test')

# Create your tests here.
class ManualModelTests(TestCase):
    def tearDown(self):
        try:
            os.remove('/temp/django_test/test_image.jpg')
        except FileNotFoundError: 
            pass

    def test_normal_manual_upload(self):
        in_image = open(os.path.join(os.path.dirname(__file__), 'test_image.jpg'), 'r+b')
        in_file = open(os.path.join(os.path.dirname(__file__), 'test_manual.pdf'), 'r+b')





        thumbnail = File(in_image)
        in_manual = File(in_file)

        new_manual = Manual.objects.create(
            photo=thumbnail, 
            manual=in_manual, 
            make='yoshimura', 
            model='001', 
            year_min=2007, 
            year_max=2010
        )

        self.assertTrue(os.path.exists('/temp/django_test/photos/test_image.jpg'))
        self.assertTrue(os.path.exists     
 ('/temp/django_test/manuals/test_manual.pdf'))

        self.tearDown()

模型代码如下:

class Manual(models.Model):
    photo = models.ImageField(upload_to="photos")
    make = models.CharField(max_length=50)
    model = models.CharField(max_length=100)
    manual = models.FileField(upload_to="manuals")
    year_min = models.PositiveIntegerField(default=0)
    year_max = models.PositiveIntegerField(default=0)

测试代码旨在创建一个Manual对象(只需测试以查看模型是否正常保存)。但是,在运行代码后,在完成模型构造函数调用之后,我得到了一个疯狂的长错误,该错误是在python的makdirs()函数的许多调用以

结尾之后出现的
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\\Users\\Jason\\Projects\\motomanuals\\temp\\django_test\\photos\\C:'

可以找到错误的完整粘贴框here

我的猜测是问题出在以'\\ C:'结尾的路径吗?

我的问题是:

  1. 我猜对了。如果没有,那么为什么会出现此错误?
  2. 为什么Django为什么要尝试在文件路径中添加'\\ C:\',我该如何解决?

0 个答案:

没有答案