Django 应用中的连字符
我遇到了一个问题,跟导入和一个名字里有连字符的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(以及大多数其他编程语言)中,'-'(连字符)不能用在变量名里,因为'-'是减法运算符。