2012-05-25 4 views
1

django를 통해 webservices 애플리케이션을 작성했습니다. 이 응용 프로그램은 우리 서버에서 여러 인스턴스로 발견 될 수 있습니다. 예를 들어Django : 쿠키 경로를 설정하기 위해 urlresolver를 사용하십시오.

:

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

는 응용 프로그램 인스턴스는 mod_wsgi에 통해 아파치에 호스팅됩니다.

나는이 모든 인스턴스에 대해 쿠키 인증을 사용하고 각 쿠키가 다른 쿠키와 겹치지 않도록하고 싶습니다. 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)) 

나는 모든 URL이로드 된 후이 비트를 추가 :

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

불행하게도 urlresolvers.reverse('server_root') 반환 / 아닌 것으로, 예를 들어, /testapp/. 각 인스턴스에 로그인하면 쿠키가 겹칩니다.

나중에 애플리케이션 사용에서 일부 프리뷰에 django.db.models.permalink을 사용합니다. 올바른 프리픽스 URL (예 : /testapp/page/465)을 반환합니다.

urls.py을 실행하는 동안 누락 된 컨텍스트가있을 수 있습니다.

아이디어가 있으십니까?

읽어 주셔서 감사합니다.

답변

3

shouldn't change Django settings at runtime. Django 1.4 또는 그 이후 버전을 사용한다면, 을 사용하고 SESSION_COOKIE_PATH을 settings.py에 설정할 수 있습니다.

SESSION_COOKIE_PATH = reverse_lazy('server_root') 
+0

이것은 정확히 내가 필요한 것입니다. 감사합니다! –