1

私はDjango フレームワークが初めてで、 Amazon S3からファイルをダウンロードするためのリンクを生成しようとしていました。テンプレート ページを読み込もうとしたときに、次のエラーが発生しました。

Reverse for 'myapp.views.handles3downloads' with arguments '(u'README.md',)'
and keyword arguments '{}' not found.

urls.py

urlpatterns = patterns('',
    url(r'^handles3downloads/(\d+)/$', handles3downloads),
)

ビュー.py

def handles3downloads(request, fname):
    bucket_name = 'bucketname'
    key = s.get_bucket(bucket_name).get_key(fname)
    dfilename = key.get_contents_to_filename(fname)

    wrapper = HttpResponse(file(dfilename))
    response = HttpResponse(wrapper, content_type='text/plain')
    response['Content-Length'] = os.path.getsize(dfilename)
    return response

テンプレートファイル

<a href="{% url 'myapp.views.handles3downloads' sfile.linkUrl %}">{{sfile.linkUrl}}</a>

同様のエラーのあるいくつかのソリューションを見ましたが、役に立ちませんでした。誰でも私を助けてください。

よろしくお願いします

4

3 に答える 3

2

ファイル内の正規表現urls.pyが間違っているようです。代わりにこれを使用してみてください:

url(r'^handles3downloads/(\w+)/$', handles3downloads),

パラメータ文字列をビューに渡していますが、これregexは整数と一致しています。

于 2013-05-14T08:30:23.260 に答える
0

ヨルダンは正しいです。urls.py に問題があります。エラーでわかります。「myapp.views.handles3downloads」で逆引きを取得しようとしていますが、その逆引き文字列は特定されましたか? これを試して。

urlpatterns = patterns('',
     url(r'^handles3downloads/([^/]+)/$', handles3downloads,
     name='myapp.views.handles3downloads'),
)
于 2013-05-16T19:43:00.320 に答える
0

urls.py

url(r'^handles3downloads/', handles3downloads),

ビュー.py

def handles3downloads(request):
  fname = request.GET['filename']
  bucket_name = 'bucketname'
  key = s.get_bucket(bucket_name).get_key(fname)
  key.get_contents_to_filename('/tmp/'+key.name)
  wrapper = FileWrapper(open('/tmp/'+fname, 'rb'))
  content_type = mimetypes.guess_type('/tmp/'+fname)[0]
  response = HttpResponse(wrapper,content_type=content_type)
  response['Content-Length'] = os.path.getsize('/tmp/'+fname)
  response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(fname)

テンプレート

<a href="/handles3downloads/?filename=file1.jpg" rel="external">Download</a>
于 2014-04-07T14:05:05.280 に答える