2010-01-03 24 views
1

我正在開發Google App Engine上的應用程序,其中一個功能是通過Facebook Connect進行身份驗證。我已經完成了一切工作並達到了一定的水平,但爲了在我的開發機器上測試它,我在一臺面向公開服務器的代理服務器上創建了一個反向代理服務器。在所有應用程序中實現網站前綴

這一切工作正常,除了大多數鏈接沒有我爲代理創建的前綴。

因此,讓我想到,是否有一種簡單的方法來創建一個站點範圍的應用程序前綴,不僅適用於我的應用程序,但我想使用任何第三方應用程序?

有沒有我可以包含的一些中間件或Django文檔我沒看過?

**更新:**在下面的評論,我想的前綴進去之間,然後將該域名和應用網址:

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

回答

2

myapp的URL設計爲獨立(例如,其URL可以「包含」在另一個項目的URL中)。

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

注意,你不能把「MYAPP」在您的網址在這一點上,只是有可能,無論你想在部署時指出一個基本的URL方案。

然後,爲每個目標部署一個單獨的URL配置模塊(例如,測試與生產),並使用django.conf.urls.defaults.include function要連接到任何任意深基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模塊,而不是直接指向URL模塊myapp

因爲我的測試環境看起來與我的生產環境有很大不同,所以我希望爲每個目標部署都有一個單獨的設置模塊。

+0

謝謝喬,我只需要修補任何我想使用的第三方應用程序,不要讓我這樣工作。 當不知道我的前綴的模板中存在鏈接等時會出現問題。 – 2010-01-05 12:01:46

+0

這工作得很好,如果有其他人從反向代理的後面使用它,你可以使用(?:PREFIX /)?使前綴可選,並且在進行開發時它會在沒有前綴的情況下進行本地響應。 – 2010-01-05 18:59:51

0

如果你的前綴是域中名稱,爲什麼不使用根目錄相關的URL?

我總是用這種網址,這是非常方便的

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

希望這會有所幫助。

+0

不,前綴需要進入域名和實際的應用程序網址之間。 http://example.com/PREFIX/myapp/view例如 – 2010-01-04 22:29:34

+0

如何定義一個新的settings.PREFIX ='開發',你可以在你的網址中使用? – jujule 2010-01-05 09:02:48

相關問題