0

ビュー.py

def search(request,csv_export):
    if request.method == 'POST':
        reports = Report.objects.filter(user__in=user_list).order_by('-created_date_time', '-id')
    ''''' 
    some code
    ''''''
    if csv_export:  
        response = HttpResponse(mimetype='text/csv')
        filename = "%s-%s.csv" % ('incident-reporter', datetime.datetime.now().strftime('%Y-%m-%d'))
        response['Content-Disposition'] = 'attachment; filename=%s' % filename
        writer = UnicodeWriter(response, encoding='utf-8')
        writer.writerow(headerrow)
        for writerow in report_list:
            writer.writerow(writerow)
        return response        
    return render(request,'search.html',{'report':report})  

urls.py

 urlpatterns = patterns(
     'incident.views',
     (r'^$', 'index'),
     (r'^search/$', 'search',{"csv_export": False}),
     (r'^csv_export/$', 'csv_export',{"csv_export": True}),
     (r'^what/$', 'what'),
     (r'^where/$', 'where'),
     (r'^when/$', 'when'),
     (r'^media/$', 'media'),
)

このエラーが発生しています:

「/report/search/ search() の TypeError は、正確に 2 つの引数 (1 つ指定) を取ります」

以下の私のトレースバックを参照してください。

Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

Exception Type: TypeError at /report/search/
Exception Value: search() takes exactly 2 arguments (1 given)

編集:urls.pyが問題で更新されました

4

2 に答える 2

0

問題はおそらく別の場所で発生していますが({% url %}通話中だと思います)、簡単に解決できるはずです:

def search(request, csv_export=False):

次にurls.pyで:

(r'^search/$', 'search'),  # <- more elegant, isn't it?
(r'^csv_export/$', 'csv_export', {"csv_export": True}),

これは、引数なしで呼び出された場合、csv_export のデフォルト値を提供します。

これで問題が解決しない場合は、スキーマに関する詳細を投稿する必要があります。

于 2013-08-05T14:11:42.513 に答える
-4

もしも

{"csv_export": False}

検索機能を呼び出す方法であれば、それは明らかです。

検索関数は、(request,csv_export) の 2 つの引数を取ります。引数を 1 つだけ送信します ( csv_export )

関数呼び出しは次のようになります。

 {"request": something, "csv_export": False}
于 2013-08-03T14:45:31.353 に答える