和遗留Web应用集成

同由其他技术驱动的应用一样,在相同的Web服务器上运行Django应用也是可行的。 最简单直接的办法就是利用Apaches配置文件httpd.conf,将不同的URL类型分发至不同的技术。 (请注意,第12章包含了在Apache/mod_python上配置Django的相关内容,因此在尝试本章集成之前花些时间去仔细阅读第12章或许是值得的。)

关键在于只有在您的httpd.conf文件中进行了相关定义,Django对某个特定的URL类型的驱动才会被激活。 在第12章中解释的缺省部署方案假定您需要Django去驱动某个特定域上的每一个页面。

  1. <Location "/">
  2. SetHandler python-program
  3. PythonHandler django.core.handlers.modpython
  4. SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  5. PythonDebug On
  6. </Location>

这里, &lt;Location "/"&gt; 这一行表示用Django处理每个以根开头的URL.

精妙之处在于Django将<location>指令值限定于一个特定的目录树上。 举个例子,比如说您有一个在某个域中驱动大多数页面的遗留PHP应用,并且您希望不中断PHP代码的运行而在../admin/位置安装一个Django域。 要做到这一点,您只需将<location>值设置为/admin/即可。

  1. <Location "/admin/">
  2. SetHandler python-program
  3. PythonHandler django.core.handlers.modpython
  4. SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  5. PythonDebug On
  6. </Location>

有了这样的设置,只有那些以/admin/开头的URL地址才会触发Django去进行处理。 其他页面会使用已存在的设置。

请注意,把Diango绑定到的合格的URL(比如在本章例子中的 /admin/ )并不会影响其对URL的解析。 绝对路径对Django才是有效的(例如 /admin/people/person/add/ ),而非截断后的URL(例如 /people/person/add/ )。这意味着你的根URLconf必须包含前缀 /admin/