2012-05-25 91 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时可能会丢失上下文。

任何想法?

感谢您的阅读。

回答