1

我正在 Google 的 App Engine 上开发一个应用程序,其中一个功能是通过 Facebook Connect 进行身份验证。我已经完成了所有设置并达到了一定的水平,但是为了在我的开发机器上对其进行测试,我在我的一个面向公众的服务器上创建了一个反向代理,该服务器代理到开发机器。

除了大多数链接没有我为代理创建的前缀之外,一切都很好。

所以这让我开始思考,有没有一种简单的方法来创建一个站点范围的应用程序前缀,它不仅适用于我的应用程序,而且适用于我想使用的任何第 3 方应用程序?

是否有一些我可以包含的中间件或一些我没有读过的 Django 文档?

**更新:** 在下面的评论之后,我想到的前缀介于域名和应用程序 url 之间:

http://example.com/PREFIX/myapp/view/

4

2 回答 2

2

将 URL 设计为myapp独立的(这样它的 URL 可以“包含”在另一个项目的 URL 中)。

urlpatterns = patterns ('',
    (r'^$', 'myapp.views.index'),
    (r'^view/$', 'myapp.views.view'),
    ...
)

请注意,此时您并没有将“myapp”放在您的 URL 中,而只是有一个基本的 URL 方案,可以在部署时指向您想要的任何位置。

然后,为每个目标部署(例如,测试与生产)创建一个单独的 URLconf 模块,并使用该django.conf.urls.defaults.include函数将 URL 连接到您想要的任意深度的基本 URL:

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^PREFIX/myapp/', include('myapp.urls')),
    (r'^PREFIX/myapp2/', include('myapp2.urls')),
    (r'^PREFIX/myapp3/', include('myapp3.urls')),    
)

将您的部署 settings.py 指向使用此 URLconf 模块,而不是直接指向myapp.

因为我的测试环境看起来与我的生产环境完全不同,所以我喜欢为每个目标部署设置一个单独的设置模块。

于 2010-01-04T23:04:30.633 回答
0

如果您的前缀在域名中,为什么不使用相对于根的 url?

我总是使用这种非常方便的网址

<a href="/myapp/view">blex</a>
<img src="/static/img/blex.png"/>

希望这可以帮助。

于 2010-01-04T12:20:39.003 回答