用大写字母命名 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新建的安卓项目的名称的命名是大写还是小写有啥规则吗?