我正在使用pathlib.Path作为os.path的替代方案,并尝试将其用于django项目中的目录路径,但是我尝试创建迁移时发生了错误:
"return database_name == ': memory:' or 'mode = memory' in database_name
TypeError: argument of type 'PosixPath' is not iterable "
和我的基本目录:
BASE_DIR = Path(__file__).parent.parent.parent
数据库连接:
BASE_DIR.joinpath('db.sqlite3')
发布于 2019-02-21 04:17:57
pathlib.Path
%s不是字符串(或字节)。大多数内部Django代码使用os.path
函数,这些函数需要字符串/字节,并且需要字符串(看起来像database_name
所期望的)的代码不能与pathlib.Path
对象一起工作--您需要将其转换为字符串(即.str(BASE_DIR.joinpath('db.sqlite3')
可以编写一个Path类作为str
的子类,这使得与期望字符串的代码的交互更加透明(许多人已经创建了这样的类,包括me:https://github.com/datakortet/dkfileutils/blob/master/dkfileutils/path.py)。
发布于 2020-01-04 20:14:59
你的用例甚至可以更简单一点:
BASE_DIR = Path.cwd()
DATABASE.NAME = str(BASE_DIR / "db.sqlite3")
注意:转换为字符串,因为Django还不能处理Pathlib实例。
https://stackoverflow.com/questions/54794468
复制相似问题