2009-10-13 5 views
0

저는 장고 사이트를 몇 개 만들었지 만 지금까지 urls.py에서 개별보기와 URL을 매핑했습니다.Django 사이트의 데이터베이스에 URL이 저장되었습니다.

이제 작은 맞춤형 CMS를 만들려고했지만 URL에 문제가 있습니다. 나는 헤더에 대한 열, 오른쪽 메뉴에 대한 하나, 콘텐츠에 대한 하나와 같은 페이지에 대한 코드를 포함하는 데이터베이스 테이블 (SQLite3)을 가지고 있습니다. URL에 대한 열도 있습니다. 어떻게하면 장고가 각 페이지의 뷰와 URL을 코딩하지 않고 열에 저장된 URL로부터 데이터베이스 테이블의 정보를 호출하게 할 수 있습니까?

누군가가 문서의 오른쪽 부분이나이 부분을 설명하는 사이트에서 나를 지적하면 많은 도움이 될 것입니다.

감사합니다.

답변

5

,이 작업을 수행합니다

urls.py에서 내가

url(r'(?P<slug>[a-z1-3_]{1,})/$','cms.views.category_view', name="category-view") 
같은 URL 매핑을

이 경우 정규식 (?P<slug>[a-z1-3_]{1,})은 슬러그 변수를 반환하고 내보기 cms.views.category_view으로 보냅니다. 해당 뷰에서 나는 다음과 같은 쿼리 :

@render_to('category.html') 
def category_view(request, slug): 
    return {'cat':Category.objects.get(slug=slug)} 

(참고 : 나는 annoying-decoratorrender_to을 사용하고 있습니다 - 그것은 render_to_response 같은 단지 짧은)이이 tutorial에 포함되어야한다

편집. 여기 세부 사항에 url-configuration and dispatching이 있습니다. djangobook도 그것을 다룹니다. 그리고 비단뱀 정규식 모듈을 확인하십시오.

물론이 코드를 사용할 수 있습니다.

+0

이것은 내가 찾던 일이었습니다. 404를 사용하는 것은 약간 더러운 것처럼 보였다.이것은 곧장 끝이납니다. 이 유형의 URL 매핑이 문서화 된 곳을 물어볼 수 있습니까? 나는 공식 문서와 장고 서적을 통해 돌아 왔고 찾을 수 없다. 두 번째로, 내 사이트가 작동 할 때 위의 내용을 작은 자습서의 예로 사용하면 걱정하지 않습니까? 어쨌든 많은 감사합니다. –

1

당신의 질문은 약간 비틀었지만 당신이 묻는 것은 django.contrib.flatpages가 이것을 어떻게 처리하는지와 비슷하다고 생각합니다. 기본적으로 미들웨어를 사용하여 404 오류를 파악한 다음 플랫 페이지 중 일치하는 URL 필드가 있는지 확인합니다.

모든 URL이 "검색 엔진 친화적 인"한 사이트에서이 작업을 수행했습니다. 우리는 save() 메소드를 오버라이드하여 this_is_the_title.html (또는 무엇이든)로 제목을 munged 한 다음 URL => object class/id mapping.ng가있는 별도의 테이블에 저장했습니다 (즉, 앞에 flatpages 미들웨어 목록에 있음). 당신은 주소되어야 flatpage 웨이 모델의

에 그것에 필요 없다

+0

플랫 페이지의 작동 원리는 무엇을 의미합니까? 이것이 장고를 사용하는 대부분의 CMS의 작업 방법입니까? 장고가 페이지를 쓸 때 자동으로 urls.py를 다시 작성하거나 데이터베이스에 저장된 페이지에 대해 URL을 매핑하는 다른 방법이 있는지 궁금합니다. –

+0

Django의 URL 매핑은 명시 적 (urls.py 파일의 정규식을 통해)과 암시 적 (또는 '유추 된'이 더 좋은 단어)의 두 범주로 나뉩니다. 사용자 (또는 CMS)가 어떤 URL을 어떤 페이지에 매핑할지에 대한 임의의 규칙 집합이있는 경우 암시 적 메서드 (플랫 페이지의 404 메커니즘 포함) 만 사용해야합니다. semi-magical 미들웨어 방법보다는 urls.py 파일에 일련의 404 핸들러를 지정하는 방법이 있다면 클리너/클리어링이라고 생각합니다. I.E. 함축적 인 방법을 더 명백하게하기. 나는 당신이 '*'의 정규 표현식으로 그것을 할 수 있다고 생각합니다. 오 잘 ... –

관련 문제