用大写字母命名 django 应用程序可以吗?

Posted

技术标签:

【中文标题】用大写字母命名 django 应用程序可以吗?【英文标题】:is it fine to name django apps with capital letters? 【发布时间】:2021-04-20 10:42:31 【问题描述】:

在 django 中,我将我的应用命名为“Home”。我在models.py中创建了一个名为“images”的类并进行了迁移,因此我在我的数据库中创建了一个表作为“Home_images”。但是当我尝试对该表执行原始查询时出现问题。

  query = "select * from Home_images" 
  cursor.execute(query)

字符串 query 被转换为较小的字母,因此 django 找不到名为“Home_images”的表。因为它试图查找数据库中不存在的表名“home_images”。

【问题讨论】:

“字符串查询被转换成更小的字母” — Wut? "select * from Home_images" 被转换为 "select * from home_images",因为数据库中没有名为 "home_images" 的表我出错了。 你认为它为什么会被转换,具体是通过什么转换的? @deceze ` ProgrammingError at /api/images/ 关系“home_image”不存在第 1 行:从 Home_image 中选择 * ^ 请求方法:GET 请求 URL:localhost:8000/api/images Django 版本:3.1.4 异常类型:ProgrammingError 异常值:关系“home_image”不存在第 1 行:从 Home_image 中选择 * ^` 浏览器显示此错误“home_image”不存在,这是真的,我将“Home_image”作为数据库中的表 【参考方案1】:

不带引号的 PostgreSQL 标识符不区分大小写并隐式小写,这是数据库标准和 documented

所以

select * from Home_images 

转换为

select * from home_images 

由 PostgreSQL 提供

如果你想要区分大小写的返回,你应该引用你的名字"Home_images"

【讨论】:

在我看来,您应该使用蛇案例,因为这将与 Django 标准 ORM 生成的命名方案一起使用,也将查询留给 ORM,将表生成留给迁移 mysql是一样的还是只对postgresql适用?? 不难发现dev.mysql.com/doc/refman/8.0/en/…【参考方案2】:

这是正确的,但在这种情况下不会进行这样的查询,您的项目将工作文件我还将我的项目应用程序命名为“KE”,它工作正常。

【讨论】:

以上是关于用大写字母命名 django 应用程序可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

JS的自定义函数有啥命名的规则,大小写、数字、特殊符号、开头等

我知道 Django 和颤振。可以用这两个做网站吗?如果是,我们可以为移动应用程序使用相同的代码吗?

eclipse新建的安卓项目的名称的命名是大写还是小写有啥规则吗?

Python中如何正确命名变量,有规律吗?

如何重命名 Django 应用程序并将数据从一个应用程序迁移到另一个应用程序

python变量名有命名规范吗