0

Django urls.py を使用して URL から値を取得しています。ここに私のurls.py:

urlpatterns = patterns('',
    url(r'^word/(?P<w>.+)/$', 'myapp.views.word'),
    url(r'^word/(?P<w>.+$)/action/', 'myapp.views.action'),)

最初の項目:myapp.views.wordうまく機能し、入力された変数を受け入れます:そして、views.py で選択した方法を/word/asdf操作できます。asdf2番目の項目myapp.views.actionでエラーが発生します

Exception Value:    
Word matching query does not exist. Lookup parameters were {'word__iexact': u'asdf/action'}

これは私の一部ですviews.py

def action(request, w):
    o = Word.objects.get(word__iexact=w)

ユーザーが行ったときに、パラメーターに対してビューを/word/asdf/action実行できるようにしたいと思います。私は何を間違っていますか?actionasdf

4

2 に答える 2

2

あなたは置き忘れ$たので、アクションはあなたのパラメータにあります

urlpatterns = patterns('',
    url(r'^word/(?P<w>.+)/$', 'myapp.views.word'),
    url(r'^word/(?P<w>.+)/action/$', 'myapp.views.action'),)
于 2013-03-12T10:23:41.190 に答える
1

「/」文字にも一致するため、このエラーが発生しますr'.+'。また、貪欲に動作するため、URLの最後の部分すべてに一致します。このため、2番目の定義を呼び出すことはなく、両方とも/asfd/一致し/asfd/action/ます^word/(?P<w>.+)/$https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request、ポイント#を参照) 3)

url.pyでこれを試してください:

 url(r'^word/(?P<w>.+)/(?P<action>.+)/$', 'myapp.views.action'),)

そしてあなたのviews.pyで

def action(request, w, action):
    o = Word.objects.get(word__iexact=w)
    # do something with "action" variable and "o" object
    #...

それ以外の場合は、次のように貪欲でない正規表現を使用できます。

     url(r'^word/(?P<w>\w+)/$', 'myapp.views.word'),)
     url(r'^word/(?P<w>\w+)/action/$', 'myapp.views.action'),)
     url(r'^word/(?P<w>\w+)/draw/$', 'myapp.views.draw'),)
     # and so on...

詳細については、いつでもpython docs( http://docs.python.org/2/library/re.html#regular-expression-syntax)を参照できます。

于 2013-03-12T10:17:36.040 に答える