Python - Django - 合并两个django项目,将一个项目作为另一个项目的子项目
Python - Django - 合并两个django项目,将一个项目作为另一个项目的子项目
前言
我开发了一个小项目,是BUCT的学生访客申请的后端,叫LetVisit;我校有一个已有的项目,是平安校园管理系统,叫ZJSystem。
LetVisit已经基本开发好且测试好了,但是突然要把LetVisit整合到ZJSystem中。怎么办?重构?太麻烦了。
于是我就想有没有一个较好的合并两个django项目的方法,发现基本上没有。跟着为数不多的文章尝试也失败了。
最后,借助ChatGPT的帮助,成功合并了两个项目,特将方法记录如下。
How
平安校园的目录结构为:
1 | |
访客申请后端的目录结构为:
1 | |
现在将LetVisit作为ZJSystem的一个APP并合并到ZJSystem中。
首先,将LetVisit整个文件夹移动到ZJsystem/ZJSystem下:
1 | |
然后,将LetVisit修改为一个APP。怎么做呢?只需要在ZJSystem/ZJSystem/LetVisit/LetVisit/urls.py中添加一段代码:
1 | |
然后在ZJSystem中使用这个APP。怎么做呢?需要在ZJSystem/ZJSystem/settings.py的INSTALLED_APPS中,加上LetVisit
1 | |
最后,我们需要做的就是:将访问LetVisit的请求转发给LetVisit这个APP处理。这里,我们可以选择将所有以LetVisit开头的请求转交给LetVisit这个APP。怎么做呢?我们只需要在ZJSystem/ZJSystem/urls.py中添加一行path('LetVisit/', include('LetVisit.urls', namespace='LetVisit'))
1 | |
这样,所有的以LetVisit/开头的请求都会转交给LetVisit这个APP来处理啦!
先别着急,运行一下试试:
1 | |
咦?发现LetVisit这个APP报错了:
1 | |
这是因为,在单独的LetVisit项目中,LetVisit/manage.py和LetVisit/LetVisit是同级的,因此自然能找到LetVisit这个“包”。但是LetVisit作为ZJSystem的子项目后,运行的是ZJSystem/manage.py,找不到ZJSystem/ZJSystem/LetVisit/LetVisit。
怎么办呢?也不难,把LetVisit添加到Python执行路径的环境中就好了。在ZJSystem/ZJSystem/settings.py中,添加:
1 | |
这样执行ZJSystem时,就能找到LetVisit了。
大功告成。
More
注意,这时候所有对LetVisit的请求的URL都要以LetVisit开头,可能会与原始的地址不匹配,注意修改一下。
相当于对于整个项目ZJSystem来说,127.0.0.1:8000/LetVisit/HelloWord会被转发给LetVisit,但是对于LetVisit来说,它所匹配的URL是HelloWorld,而不是LetVisit/HelloWorld。
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/130248202