我正在开发Google App Engine上的应用程序,其中一项功能是通过Facebook Connect进行身份验证。我已经设置了一切并且工作到了一定程度,但是为了在我的开发机器上测试它,我在我的一个面向公共服务器上创建了一个反向代理,它代理到开发机器。
除了大部分链接没有我为代理创建的前缀外,一切正常。
所以这让我思考,是否有一种简单的方法来创建一个网站范围的应用前缀,不仅适用于我的应用,还有我想使用的任何第三方应用?
我是否可以包含一些中间件或者我没有读过的Django文档?
**更新:**按照下面的评论,我想到的前缀介于域名和应用网址之间:
答案 0 :(得分:2)
将myapp
的网址设计为独立的(以便其网址可以“包含”在另一个项目的网址中)。
urlpatterns = patterns ('',
(r'^$', 'myapp.views.index'),
(r'^view/$', 'myapp.views.view'),
...
)
请注意,此时您并未在网址中添加“myapp”,而只是拥有一个基本的URL方案,可以在部署时指向您想要的任何位置。
然后,为每个目标部署创建一个单独的URLconf模块(例如,测试与生产),并使用django.conf.urls.defaults.include
function将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
的URL模块。
因为我的测试环境看起来与我的生产环境完全不同,所以我希望为每个目标部署设置一个单独的设置模块。
答案 1 :(得分:0)
如果您的前缀在域名中,为什么不使用root-relative网址?
我总是使用这种非常方便的网址
<a href="/myapp/view">blex</a>
<img src="/static/img/blex.png"/>
希望这会有所帮助。