首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Django中使用pathlib.Path?

如何在Django中使用pathlib.Path?
EN

Stack Overflow用户
提问于 2019-02-21 04:08:27
回答 2查看 3.4K关注 0票数 2

我正在使用pathlib.Path作为os.path的替代方案,并尝试将其用于django项目中的目录路径,但是我尝试创建迁移时发生了错误:

代码语言:javascript
复制
"return database_name == ': memory:' or 'mode = memory' in database_name
TypeError: argument of type 'PosixPath' is not iterable "

和我的基本目录:

代码语言:javascript
复制
BASE_DIR = Path(__file__).parent.parent.parent

数据库连接:

代码语言:javascript
复制
BASE_DIR.joinpath('db.sqlite3')
EN

回答 2

Stack Overflow用户

发布于 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)。

票数 3
EN

Stack Overflow用户

发布于 2020-01-04 20:14:59

你的用例甚至可以更简单一点:

代码语言:javascript
复制
BASE_DIR = Path.cwd()
DATABASE.NAME = str(BASE_DIR / "db.sqlite3")

注意:转换为字符串,因为Django还不能处理Pathlib实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54794468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档