2012-05-25 130 views
1

我通過django寫了一個webservices應用程序。這個應用程序可以在我們的服務器上找到幾個實例。Django:使用urlresolver設置cookie路徑

例如:

http://server1/testapp/ 
http://server2/sandboxapp/ 
http://server2/productionapp/ 

該應用實例通過mod_wsgi的託管在apache2的。

我對所有這些實例都使用cookie身份驗證,並希望每個cookie都不與其他cookie重複。我需要設置SESSION_COOKIE_PATH值。

發生這種情況時,我不知道應用程序部署後的URL。所以我想使用反向網址來猜測這個值。

我的主要urls.py看起來像這樣:

urlpatterns = patterns('', 
    (r'admin/', include(admin.site.urls)), 
    url(r'^$', view_server_root, {}, name='server_root'), 
    ), 
# here I also includes urls from the various sub-apps 
for app in apps: 
    urlpatterns.append(url(urlprefix, include(app.urls)) 

我加入此位的所有URL被加載後:

from django.core import urlresolvers 
from django.conf import settings 
settings.SESSION_COOKIE_PATH = urlresolvers.reverse('server_root') 

不幸的是urlresolvers.reverse('server_root')回報/,而不是預期的,例如,/testapp/。如果我登錄到每個實例,我的cookie會重疊。

儘管在後面的應用程序使用情況中,我使用django.db.models.permalink來獲取某些視圖,這會返回一個正確的前綴URL(例如/testapp/page/465)。

執行urls.py時可能會丟失上下文。

任何想法?

感謝您的閱讀。

回答