Django 数据库路径:没有不受支持的操作数类型

django database path : no unsupported opperand type

在django settings.py中,数据库默认为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

但是当我在 python a={'a':'a'/'b'} 中执行操作时,我收到错误 TypeError: unsupported operand type(s) for /: 'str' and 'str'。 为什么错误没有出现在 django 中?

我想在子文件夹中为我的数据库定义一个不同的路径,以便 django 自动创建子文件夹和 sqlite 数据库...我该怎么做?

谢谢

But when i do in python a={'a':'a'/'b'}, I get the error TypeError: unsupported operand type(s) for /: 'str' and 'str'. How come the error doesnt show up in django?

因为BASE_DIR不是string,而是Path object [Python-doc]。对于这个对象,已经定义了__div__方法,因此它使用some_path / 'foo.sqlite3'将左侧的路径与右侧的字符串连接起来。的确,例如:

>>> Path('/etc') / 'foo' / 'bar.data'
PosixPath('/etc/foo/bar.data')

I would like to define a different path for my database, in a subfolder so as django automatically create the subfolder and the sqlite database...how can i do that?

您可以指定不同的路径,例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': <strong>BASE_DIR / 'subdir' / 'db.sqlite3'</strong>,
    }
}