提问人:Balaji Gandham 提问时间:6/22/2023 更新时间:6/23/2023 访问量:35
一个 django 项目中的多个 django 应用程序
Multiple django apps in one django project
问:
我在一个 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
现在我应该如何修改apache配置。
任何人都可以提出一些解决方案。
提前致谢。
答:
我建议你创建其他项目,因为如果它们的工作方式不同,并且你只希望它们位于不同的域中,那么我的建议是拥有不同的项目,因为 Django 在相同的 URL 下响应,改变的是端点。创建 3 个项目,并在每个项目中应用您将使用的模型,然后是您将使用的 URL,您将拥有 3 个 wsgi.py 文件,您将能够将它们分别链接到每个域。
评论
你可以把 Django 应用程序看作是“模块”,而不是一个实际的独立 Web 应用程序,你可能应该为每个你想运行的 Web 应用程序创建一个不同的项目,并使用应用程序在内部组织应用程序的不同元素和工作部分。
你可以用 Django 的投票应用程序作为如何在 Django 项目中使用应用程序的示例。
https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-the-polls-app
评论