web2py按钮应该做不同的事情

时间:2017-05-21 12:01:10

标签: python beautifulsoup web2py

我是web2py和网站的新手。 我想上传包含不同数量问题的xml文件。 我使用bs4来解析上传的文件,然后我想做不同的事情:如果xml文件中只有一个问题,我想去一个新网站,如果还有更多问题,我想要去另一个网站。 所以这是我的代码:

def import_file():
form = SQLFORM.factory(Field('file','upload', requires = IS_NOT_EMPTY(), uploadfolder = os.path.join(request.folder, 'uploads'), label='file:'))
if form.process().accepted:
    soup = BeautifulSoup('file', 'html.parser')
    questions = soup.find_all(lambda tag:tag.name == "question" and tag["type"] != "category")
    # now I want to check the length of the list to redirect to the different URL's, but it doesn't work, len(questions) is 0.
    if len(questions) == 1:
        redirect(URL('import_questions'))
    elif len(questions) > 1:
        redirect(URL('checkboxes'))
return dict(form=form, message=T("Please upload the file"))

在上传xml文件后,有人知道我能做什么,检查列表的长度吗?

1 个答案:

答案 0 :(得分:0)

BeautifulSoup需要字符串或类似文件的对象,但您传递的是'file'。相反,你应该使用:

with open(form.vars.file) as f:
    soup = BeautifulSoup(f, 'html.parser')

但是,这不是特定于web2py的问题。

希望这有帮助。