2013-06-26 2 views
1

저는 장고를 처음 사용하고 djangobook.com을 사용하고 있습니다. 동적 URL 예제를 시도했지만 TypeError를 제공합니다. 무엇이 잘못되었는지 보시겠습니까?Django 기본 사항 : 동적 URL은 TypeError를 제공합니다

views.py

from django.template.loader import get_template 
from django.template import Context 
from django.http import HttpResponse 
import datetime 

def nameOffset(request, offset): 
    print "in nameOffset" 
    t = get_template('base.html') 
    html = t.render(Context({'name':offset})) 
    return HttpResponse(html) 

urls.py

from django.conf.urls import patterns, include, url 
from MemberInterface.views import getName, nameOffset 

urlpatterns = patterns('', 
    (r'^name/$', getName), 
    (r'^name/plus/\d+/$', nameOffset), 
) 

모든/로컬 호스트/이름/

하지만/로컬 호스트/이름으로 이동/플러스/1에서 괜찮습니다 /, 얻을 수

TypeError at /name/plus/1/ 

nameOffset() takes exactly 2 arguments (1 given) 

Request Method:  GET Request URL: /localhost/name/plus/1/ 
Django Version: 1.5.1 Exception Type: TypeError Exception Value: 

nameOffset() takes exactly 2 arguments (1 given) 

어떤 그것은 "2 개의 인수, 하나 주어진"에 의해 의미합니다 .. arugments은 요청 및 오프셋입니다 ... 그리고 내부적으로 get과 함께 전달 요청 아닌가요?

편집 :

이것은 base.html가

<html> 
<title> Test Project </title> 
<body> 
Hello {{ name }} 
</body> 
</html> 
+0

링크는 localhost/name 등으로 작성되어 있으므로 http : //127.0 등으로 입력 할 수 없습니다. – user1349663

답변

1
당신은 offset 변수로 URL의 \d+ 부분을 캡처하기 위해 정규식 절약라는 이름의 그룹을 사용해야합니다

:

(r'^name/plus/(?P<offset>\d+)/$', nameOffset) 

documentation도 참조하십시오.

+0

오류 PAGE는 없애지만 오류는 제거합니다. 에서처럼, 페이지는 "Hello 123"을 읽어야하지만 "Hello"라고 읽습니다. 그게 침묵의 예외라고 생각하니? – user1349663

+0

'base.html'을 보여줄 수 있습니까? 게다가 뷰 내부에'offset' 변수를 출력하십시오 - 인쇄 된 값을 보시겠습니까? – alecxe

+0

base.html이 추가되었습니다. 또한 오프셋이 인쇄되지 않습니다. -_- – user1349663

2

도움을 주셔서 감사합니다. 나는 그것을 알아. 다른 사람이 같은 문제가있는 경우 여기에 게시하십시오. https://docs.djangoproject.com/en/dev/topics/http/urls/의 설명서에는 URL에서 캡처해야하는 모든 것이 괄호 안에 있어야한다고 언급되어 있습니다.

그래서, urls.py에서, 라인이

(r'^name/plus/(\d+)/$', nameOffset), 

대신

(r'^name/plus/\d+/$', nameOffset), 

해야한다 (필자는 djangobook 요구 업데이트의 PDF를 추측) 그리고 마지막으로, 그것을 작동합니다!

관련 문제