2011-10-28 7 views
3

URL 라우팅 시스템이 아닌 장고 모델과 템플릿을 어떻게 사용 하시겠습니까? urls.py 시스템을 PHP와 같은 것으로 교체하고 싶습니다. URL에서 코드가 실행되는 위치를 정확히 알려줍니다. 또는 레일스와 같은 좀 더 자동화 된 기능이 있습니다. URL에는 항상 앱 이름, 모델 이름 및보기 이름과 같은 구성 요소가 포함됩니다.Django의 대체 URL 라우터

django philosophy statement에서 "URL을 파이썬 함수 이름에 연결하는 것은 좋지 않은 추악한 행위"라는 말에 동의하지 않습니다. 예쁜 URL은 그다지 중요하지 않습니다. IMVHO는 여러 개의 urls.py 파일과 수십 개의 정규식에서 특정 URL 뒤에 어떤 코드가 실행되는지 알아 내기 위해 간접적 인 미로를 뛰어 넘는 복잡한 작업을 할 가치가 없습니다. 그것은 개인적인 선택입니다, 그렇죠? 장고는 일반적으로 꽤 모듈화되어있어서 다른 것들을위한 주요 구성 요소를 교체 할 수 있습니다. 그럼, 요청 URL을 취하고 실행할보기를 결정하는 부분을 어떻게 바꿀 수 있습니까?

장고에 대한 대체 URL 라우터가 있습니까?

답변

4

당신이 필요로하는 것은 모든 것이 일치하는 urls.py의 한 줄뿐입니다. 그러면 처리기/발송자를보기로 작성하면됩니다. 핸들러는 URL의 일부를 기반으로 원하는 모든 작업을 수행합니다 ....

2

Django의 URL 라우팅 시스템을 성공적으로 스왑하는 사람은 들어 본 적이 없습니다. 확실히 그럴 필요가 없습니다. core.handlers.base.BaseHandler.get_responseurlresolvers.RegexURLResolver으로 전화합니다. 아마도 스택 맨 아래에 미들웨어를 추가하여 자신의 URL 분석 시스템으로 보내고 응답을 반환 할 수 있습니다. 따라서 장고 시스템을 우회 할 수는 있지만 다소 괴롭습니다.

레일스와 비슷한 점이 있다면 다른 프레임 워크 중 하나를 사용해보십시오. Pyramid은 Rails와 매우 유사한 Routes 시스템을 사용합니다. Pyramid는 Django보다 훨씬 더 플러그 가능하므로 Django를 기반으로하는 Jinja2 템플릿 시스템을 플러그인 할 수 있어야합니다. 그러나 Django의 ORM을 별도로 사용할 방법이 없으므로 SQLAlchemy를 사용해야합니다 (큰 차이가없는 방식으로 사용할 수 있음).

관련 문제