Python 在Django中,如何从URL传递参数以在VirtualDownloadView中获取_file()?
下面是我的Django项目的一部分 我已配置了以下URLPython 在Django中,如何从URL传递参数以在VirtualDownloadView中获取_file()?,python,django,django-views,Python,Django,Django Views,下面是我的Django项目的一部分 我已配置了以下URL urlpatterns = patterns( url(r'^download/(?P<job>[0-9]+)/$', DownloadJobResults.as_view(), name='dm_download') ) 我最终将使用job参数查找作业数据并返回一个文件。但我无法通过参数。当我访问该URL时,我得到: get_file()正好接受2个参数(给定1个) 这是完整的堆栈跟踪 Traceback: Fil
urlpatterns = patterns(
url(r'^download/(?P<job>[0-9]+)/$', DownloadJobResults.as_view(), name='dm_download')
)
我最终将使用job参数查找作业数据并返回一个文件。但我无法通过参数。当我访问该URL时,我得到:
get_file()正好接受2个参数(给定1个)
这是完整的堆栈跟踪
Traceback: File "/Users/michael/app/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/michael/app/lib/python2.7/site-packages/django/views/generic/base.py" in view
69. return self.dispatch(request, *args, **kwargs) File "/Users/michael/app/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
87. return handler(request, *args, **kwargs) File "/Users/michael/app/lib/python2.7/site-packages/django_downloadview/views/base.py" in get
170. return self.render_to_response() File "/Users/michael/app/lib/python2.7/site-packages/django_downloadview/views/base.py" in render_to_response
154. self.file_instance = self.get_file()
Exception Type: TypeError at /dm/download/5/ Exception Value: get_file() takes exactly 2 arguments (1 given)
我已经解决了这个问题。基本上,Django将这些命名的URL参数放在kwargs中
class DownloadJobResults(VirtualDownloadView):
def get_file(self):
print "Job is {}".format(self.kwargs.get("job",None))
file = StringIO.StringIO()
file.write("test 1,2,3,4\n")
file.write("test 5,6,7,8\n")
file.seek(0)
return VirtualFile(file, name='sweet.txt')
请张贴完整的stacktrace!我们需要了解如何调用
get\u file()
!我已经用回溯更新了帖子。VirtualDownloadView
看起来怎么样?VirtualDownloadView是一个已安装的库。
class DownloadJobResults(VirtualDownloadView):
def get_file(self):
print "Job is {}".format(self.kwargs.get("job",None))
file = StringIO.StringIO()
file.write("test 1,2,3,4\n")
file.write("test 5,6,7,8\n")
file.seek(0)
return VirtualFile(file, name='sweet.txt')