2012-09-04 2 views
0

내가 문자열 '임차인'이있는 계정 모델을 작성, 응용 프로그램에 몇 가지 간단한 임차 지원을 추가하려고 요청 URL에서 읽고 시스템에 세입자를 식별합니다 :장고 멀티 테넌트 URL을 구성

세입자는 .example.com을/* -이 (아파치에 의해 재)

내가 간단한 미들웨어를 * 작성 /> www.example.com/ 임차인/세입자/request.path에서이 캡처 요청을 추가 .account 작업 할 개체.

내 문제는 내 URL 매핑입니다.

나는이 시도 :

url(r'^(?P<tenant_id>[\w\-]+)/', include('project.urls_tenant')), 

및 urls_tenant.py 내부에 몇 가지 간단한 URL을 정의 :

: 내가 어떤 페이지에 액세스하려고하면

url(r'^app1/', include('project.app1.urls')), 

url(r'^app2/', include('project.app2.urls')), 

, 나는 오류 메시지가

generic_view_method()에 예상치 못한 키워드 인수가 있습니다. 'tenant_id'

왜냐하면 tenant_id를 매개 변수로 기대하지 않기 때문입니다.

/test_tenant/ 모든 것이 잘 작동 나는이 urls.py 파일에 tenant_id 하드 코딩합니다.

내가 뭘 잘못하고 어떻게 수정해야합니까? 요청과 응답이 정상적으로 처리 되나요?

많은 분들께 감사드립니다. 우리의 주요 urls.py 파일에서

url(r'^(?P<tenant_id>[\w\-]+)/', include('project.urls_tenant')), 

하고 urls_tenant.py 파일에서 다른 라인 : 내가 정확하게 사용자가 정의한 사용자 설정을 이해한다면 optimal architecture for multitenant application on django

답변

0

분명히 할 필요가 없을 때 url 패턴에 명명 된 매개 변수 tenant_id를 캡처하고 있습니다.캡처를 수행 피하기 위해 괄호를 제거하십시오 :

url(r'^[\w\-]+/', include('project.urls_tenant')), 

이 페이지는 일반적으로 도움이되는 읽기입니다 : https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request

+0

네, 그럴 것이라고 생각합니다. 그러나 '{% url some_named_url %}'의 결과적인 문제를 어떻게 해결할 것인가? '()'와 키워드 인수 '{}'를 찾을 수없는 'some_named_url' ? 대단히 감사합니다 !!! – oak

+1

내 머리 꼭대기에 두 가지 옵션이 있습니다. a) 나만의'url' 태그와'reverse' 구현을 작성하십시오; b) 아파치 다시 쓰기를 제거하고 미들웨어가 호스트 하위 도메인을 기반으로 세입자를 직접 결정하게하면 브라우저가 올바른 하위 도메인에 대해 해결할/app1/news/latest /와 같은 URL을 발급합니다. b) 나에게 소리가 잘 들지만 나는 그 문제에 대해 놓친 것 같습니다. – Steven

0

: 나는 참고로이 사용?

^(? P [\ w -] +)와 일치하는 요청이 없으면 urls_tenant.py 파일을 통해 이 전달됩니까? 거기에 정의 된 두 줄은/app1 또는/app2 와만 일치 할 수 있습니다.

하지만 설정을 완전히 이해하지 못하고있는 것 같습니다.

테넌트 URL을 다른 urls.py 파일 을 포함하는 대신 특정보기로 매핑하는 것이 더 좋을 것이라고 생각합니다.

url(r'^(?P<tenant_id>[\w\-]+)/', TenantView.as_view(), name="tenant-view"), 

위와 같은 것이 더 많은 django를 보입니다.

+0

죄송합니다, 나는 당신의 아이디어를 얻을하지 않았다,도 이유가 더 좋아 장고 ... 모든 URL에 접두사를 넣으라고 제안하고 있습니까? – oak

관련 문제