确保dir的路径是Django项目

时间:2018-02-19 12:37:58

标签: python django

在过去的两天里,我正在努力解决以下问题:

给定目录的绝对路径(字符串)(在我的文件系统或服务器中,它并不重要),确定此目录是否包含有效的Django项目。

首先,我想到了下面的manage.py,但如果某个用户省略或重命名此文件会怎样?

其次,我想到找到settings模块,但我想要项目根,如果settings是2级或更高级别会怎么样?

第三,我考虑在BASE_DIR内找到(标准)settings名称,但如果用户没有定义或重命名该怎么办?

有没有办法将目录正确识别为有效的Django项目?我错过了什么吗?

2 个答案:

答案 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个存储库)克隆到本地计算机或服务器。克隆一些railsjavascript等repos并逐步编写代码。只需搜索 manage.py ,如果结果令人满意,那就是它。如果没有,请添加几个规则并对克隆的存储库进行测试,直到找到适合您的问题的足够好的解决方案。