django 应用程序中的连字符

SAF*_*SAF 4 python django django-cms

好吧,我偶然发现了导入和名称中带有连字符的 Django 应用程序的问题。

据我所知,Django 应用程序名称中甚至不允许使用连字符,但它仍然存在并且网站运行没有错误。我完全不知道该应用程序是如何创建的,因为该项目在我开始工作时已经存在。(这是一个 Django CMS 项目,如果它改变了什么顺便说一句)

现在的问题是,当我想在 shell 或项目中导入一些东西时,我不能只写,from my-app import module因为它总是因为连字符而引发错误。

同样在INSTALLED_APPS它与连字符一起列出INSTALLED_APPS = ('my-app')

那么我怎样才能真正解决这个问题并使它可用呢?我想过重命名,但我真的不知道后果,我也不想破坏 CMS 中的任何东西(我仍在学习 Django,CMS 对我来说很新)

Deb*_*ndu 6

你可以这样做:

import importlib
module = importlib.import_module('.module', 'my-app')
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档https://docs.python.org/3/library/importlib.html#importlib.import_module

编辑:这不是 Django 特定的问题,而是在 Python(以及大多数其他编程语言)中不能在变量名中使用“-”(连字符)(因为“-”是减法运算符)。