我正在尝试编写一个Django webapp,我想保存指标显示页面(/监控)的开发 - 实际上,鉴于遗留webapp's功能/成熟度,它很难打败那个遗留的php实现和用户熟悉。
有没有办法让我将遗留的php webapp集成到我的django应用程序中?
我有点觉得this post与我的想法有关。但是,我真的不想触及遗留的webapp代码,而且建议的方式似乎需要它。
我想到的另一种方法是我只是设置我的apache服务器,它将URL“/ monitoring”定向到现有的遗留php webapp,并将其余部分引导到我的django webapp。但是这样,我无法控制用户登录功能,该功能在Django webapp中为“/ monitoring”页面实现。
答案 0 :(得分: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应用程序的功能。但是,你正在处理渲染部分。当然,这是一项额外的工作,但是,相信我,这是值得的。
<强> EXTRA:强>
我建议使用REST,因为它是一个很好的解决方案。但你可以选择其他接口进行通信,比如Thrift,Protocol Buffers或MessagePack(仅举几例)