2009-10-16 3 views
4

여러분, 특정 URL 호출에 대해 NoReverseMatch 오류가 발생합니다.Django NoReverseMatch 오류를 디버깅하는 방법?

알고 싶습니다. 일반적으로 디버깅 할 수있는 유용한 도구가 있습니까? 예를 들어, 등록 된 URL을 나열하는 몇 가지 방법이 있습니까?

내 특정 예 :

템플릿 :

<a href= 
"{% url django.contrib.auth.views.redirect_to_login blarg %}">log in</a> 

오류 :

NoReverseMatch: Reverse for 
'settings.django.contrib.auth.views.redirect_to_login' 
with arguments '('[[ UNDEFINED VARIABLE ]]',)' 
and keyword arguments '{}' not found. 

내가 장고 있도록 자체는 수정, appenginepatch와 구글 앱 엔진을 사용하고 있습니다.

답변

3

URL 반전에서보기 기능의 전체 경로를 사용하는이 특별한 경우에는 쉽게 할 수있는 일은보기 기능을 살펴 보는 것입니다. 이 기능은 심지어, 그래서 그 정말조차 적절한보기를 요청 객체를 고려하지 않습니다

def redirect_to_login(next, login_url=None, 
          redirect_field_name=REDIRECT_FIELD_NAME): 
    "Redirects the user to the login page, passing the given 'next' page" 
    if not login_url: 
     login_url = settings.LOGIN_URL 
    return HttpResponseRedirect('%s?%s=%s' % (login_url, 
               urlquote(redirect_field_name), 
               urlquote(next))) 

, 그리고 심지어 django/contrib/auth/urls.py에 등록되지 않은 : 장고 1.1에서이처럼 보인다. 즉, 다른 뷰에서 도우미 함수로 사용하기위한 용도 일뿐입니다. 당신은 당신이 당신의 설정에서 TEMPLATE_DEBUG = True을 설정하면 또한

<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}"> 
    log in 
</a> 

, 저는 믿습니다 : 특정 예에 따라 어떤 경우

는 당신이 아마하고 싶어하기 때문에 같은 평범한 구식 로그인 URL을 사용했다 오류를 던지기 전에 django가 검사 한 모든 URL 패턴 목록을 가져옵니다.

+0

고마워요! 글쎄. 이것은 기본적으로 "next"대신 auth.REDIRECT_FIELD_NAME을 사용하여 끝내 었습니다. 그러나 TEMPLATE_DEBUG = True는 URL 패턴에 대한 추가 정보를 표시하지 않으므로이 질문을 공개하지 않습니다. 앱 엔진 패치가있는 Google App Engine을 사용하고 있기 때문에 Django는 패치가되어있어 실제 URL 패턴이 등록되어 있는지 확인할 수 있습니다. – dfrankow

+0

나는 Google 애플리케이션 엔진에서 실행되는 디버그 페이지를 보았지만, 장고에 내장 된 앱 엔진 패치가 아니라는 것을 알고있다. – pcardune

+0

그래, DEBUG = True로 설정하면 패턴 테이블을 볼 수 있지만 다른 패턴 테이블은 볼 수 없습니다. 지금은 왜 그것이 항상 나오지 않는지 잊어 버립니다. – dfrankow

관련 문제