2009-11-07 3 views
0

모든 URL이 사용자 이름과 관련된 사이트가 있다고 가정 해 봅니다.어떻게 모든 URL에 접두어를 추가하고 kwarg로 일반적으로 구문 분석합니까?

예를 들어/username1/points/list는 해당 사용자의 목록입니다.

모든 URL에서/username1/부분을 가져 와서 모든보기에 대해 kwarg로 추가하려면 어떻게합니까?

또는/username1/부분을 잡고 request.view_user로 요청에 추가하는 것이 좋습니다.

답변

1

middlware으로 공격하는 것이 좋습니다. 특히 process_request를 사용합니다. 이것은 이라 불리우며, urlresolver가 호출되고 당신이 원하는 모든 요청 (이 경우에는 request.path)을 수행 할 수 있습니다. 사용자 이름을 제거하고 요청 객체에 저장할 수 있습니다. 특성은 (분명히) 첫 번째 경로 구성 요소를 제거하거나 수행하지 않으려는 조건에 달려 있습니다. 코멘트 업데이트

: 당신은 당신이 그것을 추가 컨텍스트 정보를 제공해야 reverse() 호출 할 때, 그것에 대해 이동하는 방법과 상관없이 - 그냥 자동적으로 자신을 위해 그것을 알아낼 수 없습니다. Django는 man-behind-the-curtains 게임을하지 않습니다. 모든 것이 직선적 인 파이썬이며 무대 뒤에서 떠있는 전역적인 상태는 없습니다. 나는 이것이 좋은 것이라고 생각한다 ™.

+0

이 방법은 효과적입니다. 그러나 나는 역방향 경로 구성 요소를 URL을 역전시키는 URL로 되돌리려 고 고군분투하고 있습니다. 그 반대의 제안은 그 사용자에게 접근하기위한 요청 객체에 접근 할 수 없습니까? – tee

관련 문제