在过去的两天里,我正在努力解决以下问题:
给定目录的绝对路径(字符串)(在我的文件系统或服务器中,它并不重要),确定此目录是否包含有效的Django项目。
首先,我想到了下面的manage.py
,但如果某个用户省略或重命名此文件会怎样?
其次,我想到找到settings
模块,但我想要项目根,如果settings
是2级或更高级别会怎么样?
第三,我考虑在BASE_DIR
内找到(标准)settings
名称,但如果用户没有定义或重命名该怎么办?
有没有办法将目录正确识别为有效的Django项目?我错过了什么吗?
答案 0 :(得分:0)
您可以尝试的一种方法是搜索/读取目录中的.py文件,并与正则表达式匹配描述的模式 独特的django主要功能和包名。 可能有利可图,但是......呃
答案 1 :(得分:0)
评论中提到的bruno desthuilliers,没有自动防故障解决方案。
但这取决于你需要它做什么。我的意思是,它有多严格(或有多好?)。我已经看过几次PROJECT_DIR
而不是BASE_DIR
的使用情况。关于设置,我在设置目录中看到了单个 settings.py 文件和多个设置文件。
主要的挑战是Django没有那么多硬文件/模块的命名规则。只要你把各个部分放在一起,你几乎可以为你的文件命名。
如果我没弄错,Django唯一的硬规则是 models.py 文件。 Django应用必须有一个名为 models.py 的文件。但是,您的Django应用程序并不一定需要安装任何应用程序。
如果您只需要足够好的解决方案,我会说 manage.py 是一个不错的选择。你可以仔细检查并打开文件,看看那里是否有django导入。如果没有 manage.py ,请检查是否有 requirements.txt ,并检查是否列出了Django。如果没有 requirements.txt ,请检查名为要求的目录以及其中的文本文件。
您可以通过浏览repositories tagged as with "django" tag on GitHub来查找某些模式。也许使用他们的API并将所有存储库(它只列出前2000个存储库)克隆到本地计算机或服务器。克隆一些rails
,javascript
等repos并逐步编写代码。只需搜索 manage.py ,如果结果令人满意,那就是它。如果没有,请添加几个规则并对克隆的存储库进行测试,直到找到适合您的问题的足够好的解决方案。