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})  

网址.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

If

{"csv_export": False}

is the way you call the search function then it's obvious.

The search function take two arguments: (request,csv_export). You send only one argument( csv_export)

Your function call should look like this:

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