一个 django 项目中的多个 django 应用程序

Multiple django apps in one django project

提问人:Balaji Gandham 提问时间:6/22/2023 更新时间:6/23/2023 访问量:35

问:

我在一个 django 项目(mydjango)中有 3 个应用程序(app1、app2、app3),每个应用程序都有不同的用法和不同的域(app1.domain.com; app2.domain.com; app3.domain.com),因为它是单个 django 项目,我们只有一个 manage.py 文件。

我正在尝试使用 apache2 Web 服务器部署这些,所有这 3 个应用程序都使用相同的 virtualenv(使用 pyenv)和具有不同表的相同 mysql 数据库。

现在的问题是如何将这 3 个域指向它们的特定应用程序,

任何人都可以提出解决方案

我尝试了 chatgpt 和网络上其他来源/文章建议的几种方法,

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app1/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app2/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app3/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

这里建议的配置显示了 3 个应用程序的 3 个不同的“wsgi.py”文件,但 MyDjango 项目只创建了一个 wsgi.py

enter image description here

现在我应该如何修改apache配置。

任何人都可以提出一些解决方案。

提前致谢。

MySQL Django 阿帕奇

评论


答:

0赞 Rainel Urdaneta 6/22/2023 #1

我建议你创建其他项目,因为如果它们的工作方式不同,并且你只希望它们位于不同的域中,那么我的建议是拥有不同的项目,因为 Django 在相同的 URL 下响应,改变的是端点。创建 3 个项目,并在每个项目中应用您将使用的模型,然后是您将使用的 URL,您将拥有 3 个 wsgi.py 文件,您将能够将它们分别链接到每个域。

评论

1赞 Community 6/25/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Pedro Fernandez 6/23/2023 #2

你可以把 Django 应用程序看作是“模块”,而不是一个实际的独立 Web 应用程序,你可能应该为每个你想运行的 Web 应用程序创建一个不同的项目,并使用应用程序在内部组织应用程序的不同元素和工作部分。

你可以用 Django 的投票应用程序作为如何在 Django 项目中使用应用程序的示例。

https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-the-polls-app