내 프로젝트의 대부분의보기는 선택적 username 매개 변수를 허용하고 존재하는 경우 해당 사용자의 템플릿에 전달 된 쿼리 세트를 필터링합니다. 따라서, 예를 들어 :DRYness에 대한 Django URL 구성
인덱스보기 모두 다음과 같은 URL 패턴 처리 : 이러한 응용 프로그램의 숫자가 따라
가'^$' # general index page
'^(?P<username>[-\w]+)/$' # index page for the user
'^photos/$' # photo index page
'^(?P<username>[-\w]+)/photos/$' # photos for that user
...
,을 복제하여 동일한 로직을 구현하는 것은 매우 건조하지 않는 것 패턴. 나는 반복적으로 주요 urls.py 모듈을 포함하는 것이 가능하다 생각했다, 그래서 나는 이런 짓을 :
url(r'^(?P<username>[-\w]+)/', include('urls')),
내 추론이 다른 URL이 모듈이 포함되어있는 경우, 일치하는 패턴이 경로에서 제거이었다. 그래서, 나는 그것이 여분의 사용자 이름 매개 변수는 재귀 적으로 포함 된 URL을 모듈에 의해 일치 할 때
'^(?P<username>[-\w]+)/photos/$'
이
'^photos/$'
될 것이라고 기대했다. 그러나 이로 인해 요청이있을 때 개발 서버가 자동으로 종료되었습니다.
내가 생각할 수있는 두 번째 방법은 존재하는 경우 URL의 패턴과 일치하는 미들웨어를 작성하고 요청한 사용자를 요청에 추가하고 요청 경로에서 사용자 이름과 일치하는 부분을 제거하는 것입니다. 하지만 예측할 수없는 결과가있을 수 있으므로 경로를 망치고 싶지는 않습니다.
무엇을 권하고 싶습니까? 나는 DRYness에 너무 까다 롭습니까?
감사합니다, OMAT
덕분에 더 깨끗한 패턴을 얻을 수 있지만 실제로는 각 응용 프로그램에 포함 된 urls.py 파일이 있습니다. 따라서 각 응용 프로그램에 대해 모든 패턴은 자신의 urls.py에 사용자 이름과 일치하는 대안으로 복제되어야합니다. – omat
반복과 달리 앱 URL은'(r '^ photo /', include ('photos.urls'))'로 포함되기 때문에 사용자 사진의 URL은'/ photo/[username] /'이됩니다. – omat