在不完全了解您的 python 脚本在做什么的情况下,我将尝试让您快速了解我将在您的位置做什么。
我将Django 用于所有网络公开的应用程序。自定义 url 模式非常有用,对遗留数据的访问非常好,与这些数据交互的球体满足了我在所有项目中 99% 的需求。
设置 Django 以在 apache 中运行在 Django documentation 中有详细说明。一旦你的新站点启动并与你的 php 应用程序一起运行,你就可以开始它们之间的通信。
Django 访问 PHP 数据
Django manage.py 可以根据现有的表为你创建一个模型。在某些情况,您可以获得一个现成可用的模型文件以供使用,但在大多数情况下,您需要创建自己的顺序并自定义表格之间的关系。将 settings.py 的数据库部分设置为指向您的 PHP 应用程序数据库。
DATABASES = {
'default': {
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME': 'myphpappdbname',
'USER': 'phpuser',
'PASSWORD': 'phppassword'
# snipped away other options. Might or might not bee needed
}
}
设置完成后,您可以使用以下命令测试对数据的访问权限
python manage.py dbshell
当您确保正确连接到数据库后,您可以运行
python manage.py inspectdb > models.py
这将为您的每个表生成一个模型。将此模型文件添加到您的新 django 项目中的应用程序中。
python manage.py startapp phpextension
mv models.py phpextension/models.py
在设置中修改您已安装的应用程序以包含您新安装的应用程序,您现在可以通过您的 django 应用程序访问您的整个 PHP 应用程序数据。为您希望在网络上公开的数据创建视图。
作为补充说明,如果您想向公众伪装您正在混合 php 和 django/python,您可以使用以下内容创建您的 URL 模式:
url(r'^my_command.php$', 'phpextensions.views.my_command', name="my_command"),
为此,我认为您还需要设置设置APPEND_SLASH=False。
然后视图会将 django 视图视为另一个 php 脚本(只是更快、更优雅并注入了神奇的独角兽)。
通过 PHP 访问您的 Django 数据
在这里我会使用 REST api。简单的方法是使用 json.dumps(my_dictionary_of_data_for_php) 在您的视图中构建 JSON 响应,而更企业化的方法是使用 tastypie。
然后您可以使用 PHP 访问数据
$fc = file_get_contents('http://yourdomain.com/path/to/django/my_command.php');
$django_data = json_decode(fc);