1

私は Django を使い始めたばかりで、djangobook.com を使用しています。動的 URL の例を試しましたが、TypeError が返されます。何が悪いかわかりますか?

ビュー.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 ),
)

/localhost/name/ ですべて問題ありません

しかし、/localhost/name/plus/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つの引数、1つが与えられた」とはどういう意味ですか..引数はリクエストとオフセットです...そしてリクエストは get で内部的に渡されませんか?

編集:

これは base.html です

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

2 に答える 2

2

助けてくれてありがとう。私はそれを考え出した。他の誰かが同じ問題を抱えている場合に備えて、ここに投稿してください

https://docs.djangoproject.com/en/dev/topics/http/urls/のドキュメントには、URL から取得する必要があるものはすべて括弧で囲む必要があると記載されています。(djangobookのpdfを更新する必要があると思います)

したがって、urls.py の行は次のようになります。

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

それ以外の

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

そして最後に、それは動作します!

于 2013-06-27T07:00:13.597 に答える
1

\d+URL のその部分をoffset変数に取り込むには、名前付きグループを保存する正規表現を使用する必要があります。

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

ドキュメントも参照してください。

于 2013-06-26T08:30:45.097 に答える