在不完全了解您的 python 脚本在做什么的情况下,我将尝试让您快速了解我将在您的位置上做什么。
我将Django用于所有 Web 公开的应用程序。自定义 url 模式非常有用,对遗留数据的访问非常好,与这些数据交互的球体满足了我在所有项目中 99% 的需求。
Django 文档中详细解释了设置 Django 以在 apache 中运行。一旦您的新站点与您的 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 检查数据库>模型.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 响应,而更企业化的方法是使用tastepie。
然后您可以使用 PHP 访问数据
$fc = file_get_contents('http://yourdomain.com/path/to/django/my_command.php');
$django_data = json_decode(fc);