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