-2

我正在尝试编写一个 Django webapp,并且我想保存指标显示页面(/monitoring)的开发——实际上,考虑到旧版webapp 的功能/成熟度和用户熟悉度,它几乎无法击败旧版 php 实现。

我有什么办法可以将遗留的 php webapp 集成到我的 django 应用程序中?

我有点觉得这篇文章与我的想法有关。但是,我真的不想触碰旧版 webapp 的代码,而建议的方式似乎需要它。

我正在考虑的另一种方法是,我只是设置我的 apache 服务器,使其将 URL“/monitoring”定向到现有的遗留 php webapp,并将其余部分定向到我的 django webapp。但是这种方式,我无法控制用户登录功能,这是在Django webapp中为“/monitoring”页面实现的。

4

1 回答 1

1

在我看来,您链接的帖子中提出的内容根本不好。首先,您应该考虑要集成的“什么”。

  • 行为:(功能、业务逻辑等)。
  • 结构:数据库连接、操作
  • 自定义驱动程序
  • 渲染东西。实际系统如何呈现视图/页面/任何内容并按原样显示。

在您链接的帖子中,那个人想要集成所有内容:他只是想获取他以前在 PHP 页面中看到的内容,并像在 django 应用程序中一样显示它。老实说,这不好。我建议(仅基于个人经验)您不应该将已经渲染的页面集成到您的 django 应用程序中。

你可以做的是整合功能和行为。例如,假设您的 PHP 监控系统为您提供给定时间段内的用户数量。它有一个 PHP 函数:

<?php
function show_users($time_period){
   ...
}
?>

与其从该监控系统获取 HTML 并将其放入您的 Django 应用程序,不如只获取行为。例如,通过 REST 接口公开您的 PHP 应用程序。因此,在您的 Django 代码中,您可以:

# views.py
def monitoring(request):
    users = monitoring_service('/users/2012/')
    render(request, 'monitoring.html', {'users': users}

在您的模板中:

# monitoring.html
<ul>
{% for user in users %}
    <li> {{user}} </li>
{% endfor %}
</ul>

基本上,您正在重用 PHP 应用程序的功能。但是,您正在处理渲染部分。当然,这是额外的工作,但是,相信我,这是值得的。

额外的:

我建议使用 REST,因为它是一个很好的解决方案。但是您可以选择其他接口进行通信,例如 Thrift、Protocol Buffers 或 MessagePack(仅举几例)

于 2012-11-29T15:00:34.703 回答