0

我在 Django 上有一个现有项目(我们将其命名为 main),其中有几个应用程序。有一个单独的项目,也在 django 中,里面有一个应用程序(我们称之为第二个)。这是项目“second”的通用文件结构:

my_second_project
│   manage.py
│   models.py
│   my_models.py
│   my_views.py
│
├───myapp
│   │   admin.py
│   │   apps.py
│   │   Funcs.py
│   │   models.py
│   │   tests.py
│   │   urls.py <-- from here urls import to project urls file
│   │   views.py
│   │   __init__.py
│   │
│   ├───migrations
│   │   └───...│
├───my_second_project
│   │   asgi.py
│   │   settings.py
│   │   urls.py <-- HERE all urls i need
│   │   wsgi.py
│   │   __init__.py
├───templates
│       ...
│
└───__pycache__
        models.cpython-37.pyc

这是项目“main”的通用文件结构:

main_project
├───app ...
│   ├───...
├───main_project
│   ├───media
│   │   └───user_uploads
│   ├───settings
│   │   └───base.py
│   └───urls.py
├───app ...
│   ├───...
├───app ...
│   ├───...
└───static
    ├...

我需要将“第二个”项目集成到我现有的项目(主项目)中,最好不要对第二个项目进行任何更改。我尝试以与集成应用程序相同的方式(通过 url 包含)来执行此操作,但它似乎不适用于项目,因为 django 写入“找不到 myapp 模块”。

url('data-classifier/', include('my_second_project.my_second_project.urls'))

有没有办法在不更改“第二”项目的情况下将“第二”项目添加到我的“主”项目?

4

1 回答 1

-1

当您部署这些项目时,它们不会存储在附近的目录中。理想情况下,它们根本不会在同一台服务器上。

相反,如果您无法将所需应用程序的内容从第二个项目复制(或移动)到主项目,并且您不想使用 nginx 重定向,请在主项目中创建一个小应用程序并从urls.py重定向到端点第二。

main_project.my_second_project.urls.py

from django.urls import path
from django.views.generic import RedirectView

app_name = 'my_second_project'
urlpatterns = [
    path('endpoint/', RedirectView.as_view(url='<my_second_project_url>'), name='endpoint')
]

如果您在 8000 本地运行 main,然后在 8001 运行第二个,那么您将把 'http://localhost:8001/endpoint/'url放在那里。

于 2020-10-06T12:03:40.543 回答