2009-09-22 7 views
4

런타임 URL을 수정하는 데 어려움이 있다면? 예 : 데이터베이스 레코드를 기반으로합니까?Django : 런타임 URL 구성

Bruteforce의 soluttion :

r('^(.*)/', handmade_router_function) 

은 내게 너무 잔인 :) 사전에

감사합니다!

UPD : 나는 내 코드에서 urlpatterns를 직접 수정할 수 있다고 알고 있지만 많은 수작업 코딩 (사용자 정의 관리자 저장 작업, 핸들러 삭제 등)이 필요합니다. 그리고 나는 앱/라이브러리를 사용할 준비가되었는지를 알고 싶습니다.

답변

2

Django에는 이미이 작업을 수행하는 contrib 앱이 있으며 FlatPages라고합니다. 이것은 미들웨어를 등록함으로써 작동합니다. 페이지가 발견되지 않으면 요청 된 페이지는 미들웨어에 의해 포착 된 404를 던집니다. 미들웨어는 페이지를 서비스하는 것으로 판명되면 데이터베이스의 페이지를 검색하고, 그렇지 않으면 404를 던집니다.

+0

고마워요! 정확히 내가 원하는 ATM : –

0

런타임에 "urlpatterns"변수를 수정 해 보았습니까?

+0

예, 작동하지만 수작업으로 코딩해야합니다 (예 : admin save-handler를 무시하고 url이 삭제 등) 나를 도울 수있는 타사 앱/라이브러리가 있는지 궁금합니다. –

0

이와 비슷한 기능이 작동합니다. 당신은 모델 인스턴스 당신이 언급 한 것처럼 뭔가 다른, 반복되지만, 전제는 동일합니다 : 내 urls.py에서이 코드를 배치

for path in ["foo", "bar"]: 
    urlpatterns += patterns("myapp.views", url(r"^%s/$" % path, "index", {}, name=path)) 

.

  1. 나는 당신의 의견이 무엇인지 확실하지 않다, 그래서 이것은 단지 index라는 이름의보기를 호출

    http://127.0.0.1:8000/foo/ 
    http://127.0.0.1:8000/bar/ 
    

    어떤 것들은 참고 :이 다음은 뷰에 매핑되는 결과.

  2. URL의 이름은 각각 path 뒤에 나와 있습니다. 다르게 이름을 정할 수도 있습니다.
+0

질문을 명확히하기 위해 업데이트 설명을 입력하십시오. –