Python 在for循环中分配多个iterable
我正在编写一个具有两个属性的文件上传程序,供用户上传1到3个文件。到目前为止,我已经想到:Python 在for循环中分配多个iterable,python,Python,我正在编写一个具有两个属性的文件上传程序,供用户上传1到3个文件。到目前为止,我已经想到: for (file, text, url) in zip(request.FILES, request.POST['portfolio-text'], request.POST['portfolio-url']): new_file = File.objects.create(user=request.user, file=request.FILES[file], text=text, url=u
for (file, text, url) in zip(request.FILES, request.POST['portfolio-text'], request.POST['portfolio-url']):
new_file = File.objects.create(user=request.user, file=request.FILES[file], text=text, url=url)
由此产生的问题是request.POST['portfolio-text']
和request.POST['portfolio-url']
是字符串。使用zip
以字符为单位对两个字符串进行迭代。因此,如果我有一个文件,其中包含文本u'foo'
和urlu'www.baz.com'
,第一次迭代将如下所示:
file: <file>
text: u'f'
url: u'w'
文件:
文本:u'f'
网址:u'w'
如何修复此问题?我认为这将起作用:
for (file, text, url) in zip(request.FILES, [request.POST['portfolio-text']], [request.POST['portfolio-url']]):
new_file = File.objects.create(user=request.user, file=request.FILES[file], text=text, url=url)
我认为这会奏效:
for (file, text, url) in zip(request.FILES, [request.POST['portfolio-text']], [request.POST['portfolio-url']]):
new_file = File.objects.create(user=request.user, file=request.FILES[file], text=text, url=url)