2010-08-20 3 views
2

저는 장고 - 린 (django-lean) 앱을 프로젝트에 추가하려고했습니다. django-lean 앱이 현재 작업중인 프로젝트에 없으며 PYTHONPATH에 있습니다.Django 프로젝트 URL을 장고 테스트 클라이언트에서 모두 사용할 수없는 이유는 무엇입니까?

장고 리기 테스트를 통과하지 못했습니다.

urls = 'django_lean.experiments.tests.urls' 

가장 잘 나는, 테스트는 URL이 위치하고지고 말할 수 @ 'django_lean.experiments.tests.urls'

문제가 테스트 케이스가 URL의 값을 정의하는 것 같다 , 나머지 프로젝트의 URL은 이 아닙니다.

NoReverseMatch: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 

이이 프로젝트에 {%의 URL %} 템플릿 태그에 의해 트리거됩니다

은 같은 오류 메시지를 일으키는 것입니다.

프로젝트의 모든 URL을 테스트에 사용할 수 있도록하려면 어떻게해야합니까?

편집 : 누군가가 나에게 눈에 보이는 URL을 인쇄하는 스크립트를 보여 주었다 :

ipdb> import urls 
    ipdb> show_urls(urls.urlpatterns) 
    ^test-experiment/(?P<experiment_name>.*)$ 
    ^test-clientsideexperiment/(?P<experiment_name>.*)$ 
    ^admin/ 
     ^(?P<experiment_name>.+)/$ 
     ^$ 
    ^main-app/ 
     ^goal/(?P<goal_name>.*)$ 
     ^confirm_human/$ 

이이에 해당

import urls 

def show_urls(urllist, depth=0): 
    for entry in urllist: 
    print " " * depth, entry.regex.pattern 
    if hasattr(entry, 'url_patterns'): 
     show_urls(entry.url_patterns, depth + 1) 

내가 ipdb 에서이 스크립트를 호출을이 출력했다 @ django_lean.experiments.tests.urls '에있는 URL은

urlpatterns = patterns('django_lean.experiments.tests.views', 
    url(r'^test-experiment/(?P<experiment_name>.*)$', 'experiment_test'), 
    url(r'^test-clientsideexperiment/(?P<experiment_name>.*)$', 'clientsideexperiment_test')) 

urlpatterns += patterns('', 
    url(r'^admin/', include('django_lean.experiments.admin_urls')), 
    url(r'^main-app/', include('django_lean.experiments.urls')), 

내가 겪고있는 문제는 프로젝트의 다른 응용 프로그램에서 명명 된 URL 때문에 URL 테스트 태그가 테스트에 액세스 할 수 없다는 이유로 호출이 실패했기 때문입니다.

내가 장고 1.2.1

+0

글쎄, 기본적으로 장고 프로젝트 URL을 사용합니다. –

+0

나는 주석 처리를 시도했다 : # urls = 'django_lean.experiments.tests.urls' 나는 여전히 같은 오류가있다. – BryanWheelock

답변

2

솔루션은 매우 간단했습니다. 메인 프로젝트의 URL을 앱의 urls.py로 가져 오면됩니다.

from forum.urls import urlpatterns 

또는 더 일반적인 솔루션

: 당신이 URL의 명시 적 제한을 제거하는 경우

from settings import ROOT_URLCONF as project_urls 
urlpatterns = __import__('forum.urls').urls.urlpatterns 
1

파이썬 2.7을 실행하는거야 당신의 장고 당신이 answer suggested here을 사용할 수 있습니다 알고있는 모든 URL 패턴을 나열합니다. 테스트에서 이것을 실행하고 출력을 인쇄/기록하십시오.

그냥 그것의 더 나은 명시 적으로 당신은 아마 URL을 파일을 포함하는 다른 모듈을 가지고 있기 때문에

같은
from myproject import urls 

에서 URL을 가져올 위치를 명시 할 수 있습니다.