0

フォームが入力されて有効と見なされると、モデルのインスタンスを作成する「アップロード」ビューがあります。

...
from CrossStitch.models import Pattern

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            newpattern = Pattern(imagefile = request.FILES['pattern'],filename = request.POST['title'])
            return HttpResponseRedirect(reverse('configure', args=newpattern))
                                                                ^^
    else:
        form = UploadFileForm()
...

上矢印で示されているように、モデルのインスタンスを次のビューに渡したいと思います。構成ビューは次のとおりです。

def configure(request, pattern):
...

私の両方のビューには、次のような URL があります。

url(r'^upload/$','CrossStitch.views.upload', name='upload'),
url(r'^configure/$','CrossStitch.views.configure', name='configure'),

ただし、次のエラーが発生します。

TypeError at /CrossStitch/upload/
_reverse_with_prefix() argument after * must be a sequence, not Pattern
Request Method: POST
Request URL:    http://127.0.0.1:8000/CrossStitch/upload/
Django Version: 1.4.5
Exception Type: TypeError
Exception Value:    
_reverse_with_prefix() argument after * must be a sequence, not Pattern
Exception Location: /usr/lib/python2.7/dist-packages/django/core/urlresolvers.py in reverse, line 476
Python Executable:  /usr/bin/python
Python Version: 2.7.3
Python Path:    
['/home/stacey/work/Django/StaceyAnne',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PIL',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7']
Server time:    Wed, 4 Sep 2013 15:22:12 +0200

オブジェクトのインスタンスをあるビューから別のビューに正しく渡すにはどうすればよいですか?

4

1 に答える 1

1

toのargsキーワード引数reverse は iterativeです。代わりにリストやタプルなどを渡す必要があります。

ただし、あなたの場合、patternへの引数configureはオブジェクトであってはなりません。このチュートリアルのパート 3 で説明されているように、URL 構成では、構成するパターンの識別子を正規表現に含める必要があります。このようにconfigureID でパターンをフェッチすると、reverse呼び出しは次のようになりますreverse('configure', args=[newpattern.id])

于 2013-09-04T13:38:05.563 に答える