我在 django 上编写了一个 web 服务应用程序。此应用程序可以在我们的服务器上作为多个实例找到。
例如:
http://server1/testapp/
http://server2/sandboxapp/
http://server2/productionapp/
应用程序实例通过 mod_wsgi 托管在 apache2 上。
我对所有这些实例都使用 cookie 身份验证,并且希望每个实例的 cookie 不与其他实例重叠。我需要设置 SESSION_COOKIE_PATH 值。
碰巧我事先并不知道部署应用程序的 URL。所以我想使用反向 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))
我在加载所有网址后添加了这一点:
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
。
有任何想法吗?
谢谢阅读。