Django 应用中的连字符

5 投票
1 回答
2684 浏览
提问于 2025-04-18 08:01

我遇到了一个问题,跟导入和一个名字里有连字符的Django应用有关。

据我所知,Django应用的名字里是不允许有连字符的,但这个应用的名字里就是有,而且网站运行得也没问题。我完全不知道这个应用是怎么创建的,因为我开始工作时这个项目已经存在了。(顺便说一下,这是一个Django CMS项目,不知道这是否有影响)

现在的问题是,当我想在命令行或者项目中导入某些东西时,我不能直接写 from my-app import module,因为这样总是会因为连字符而报错。

而且在 INSTALLED_APPS 中,它的名字也是带连字符的,像这样 INSTALLED_APPS = ('my-app')

那么我该怎么解决这个问题,让它可以正常使用呢?我考虑过重命名,但我不太清楚这样做会有什么后果,而且我也不想把CMS搞坏(我还在学习Django,而这个CMS对我来说非常新)

1 个回答

6

你可以这样做:

import importlib
module = importlib.import_module('.module', 'my-app')

想了解更多信息,可以查看文档 https://docs.python.org/3/library/importlib.html#importlib.import_module

补充说明:这并不是Django特有的问题,而是因为在Python(以及大多数其他编程语言)中,'-'(连字符)不能用在变量名里,因为'-'是减法运算符。

撰写回答