2012-10-12 3 views
0

왜? 장고 1.4.1django URL을 다시로드하지 않고 서버를 다시 시작하십시오.

코드 설치 URL을 : 모델 페이지의 저장 방법에

PAGE_SLUGS = '|'.join(Page.objects.values_list('slug', flat=True)) 
BRAND_SLUGS = ... same concept 
(r'^(?P<brand_slug>%s)/$' % BRAND_SLUGS, 'novomore.apps.catalog.views.product_showcase_list'), 

url(r'^%s/$' % PAGE_SLUGS, 'prefab.apps.pages.views.page_detail', name='page'), 

:

if self.pk is None: 
    clear_url_caches() 
내가 사용 경로 :

의 첫 번째 수준에서 여러 모델을 원하는

각 요청에 대해 쿼리를 실행하고 싶지 않기 때문에이 aproach를 사용하는 이유는 PAGE_SLUGS를 업데이트해야하는 인스턴스를 추가 할 때입니다.

clear_url_caches() 나던

어떤 제안을 작동하는 것?

이 트릭을하지 않습니다

if settings.ROOT_URLCONF in sys.modules: 
    reload(sys.modules[settings.ROOT_URLCONF]) 
    reload(importlib.import_module(settings.ROOT_URLCONF)) 

답변

2

How to reload Django's URL config에서 :

import sys 
from django.conf import settings 

def reload_urlconf(self): 
    if settings.ROOT_URLCONF in sys.modules: 
     reload(sys.modules[settings.ROOT_URLCONF]) 
    return import_module(settings.ROOT_URLCONF) 
+0

고맙습니다과 같은 작업을 수행 할 수 있습니다, 그것은 여전히 ​​나던 일을; ive 업데이트 게시물을 –

+0

http://codeinthehole.com/writing/how-to-reload-djangos-url-config/ 장고 1.4에 대한 의견으로 인해 작동하지 않습니다? –

+0

clear_url_caches()를 사용하여 url을 다시로드하기 전에 url 캐시를 지울 필요가 있습니다. – yunshi

0

난 당신이 뭘 하려는지 생각하지 않는 좋은 생각이다. URL 정규 표현식에서 슬러그 패턴을 허용하지 않고 질문에서 Page을 찾을 수없는 경우 404를 반환하는 것이 좋을까요? 그것은 동일한 효과를 가지며 훨씬 더 간단합니다.

url(r'^(?P<slug>\w+)/$', 'prefab.apps.pages.views.page_detail', name='page'), 

다음보기 코드가 대답을

from django import shortcuts 

def page_detail(request, slug): 
    page = shortcuts.get_object_or_404(Page, slug=slug) 
    ... 
+0

그게 뭐니 뭐니하지만 처음 들어오는 요청마다 하나 이상의 쿼리가 아니라 여러 레벨의 객체를 원합니다. 내 첫 글을 확인하고 ive가 BRAND_SLUGS 예제를 추가했습니다. –

관련 문제