1

我是编程新手(仍然是学生)。我正在自学 Python,尝试在网络服务器上运行程序,并决定使用 web2py,因为它适合像我这样的初学者。该程序在命令提示符下运行良好,但没有在它制作的网页上正确执行打印语句。我一直在浏览 web2py 文档和教程,试图找到如何基本上打印一些东西而不返回它并关闭函数。当我运行这个:

def main():
            url = "http://<someurl>"
            if url[len(url) - 1] == '/':
                url = url[:len(url) - 1]
            maxdepth = 3
            maxpages = 10
            index_cnt = 4
            index = crawl_web(url,maxpages,maxdepth)
            print "Printing index..."
            for i,e in enumerate(index):
                if i >= index_cnt:
                    return
                print "'{}' appears in the following urls:".format(e[0])
                for i,u in enumerate(e[1]):
                    print "    {}".format(u)
                    return "    {}".format(u)  ##only this line printed in web2py page

只有最后的“返回”才会真正显示在页面上。我知道使用 web2py 时有一些不同的语法,但是我发现的示例代码似乎都显示了返回、response.flash、response.print、使用 print str(DIV()) 以及我发现的其他一些但无处可去和。同样,当我“返回索引”返回“无”时——我认为它会返回稍后应该由 for 循环打印的值。

'index()' 函数获取 url 的列表,但支持的函数相当长,但没有返回任何错误。

4

2 回答 2

1

如果您希望某些内容出现在浏览器中,请不要使用 print(即用于输出到 Python shell)。如果您希望浏览器显示某些内容,则您的函数必须这样return做(您也可以引发HTTP异常,这最终是框架在您的函数返回响应时所做的)。

如果您还没有这样做,我强烈建议您阅读本书的前几章,以更好地了解框架(以及一般的 Web 框架)是如何工作的。特别是看这里这里

于 2012-12-20T03:08:06.123 回答
0

不要直接在控制器中使用打印。您可以返回dictstr必须使用模板语法进行打印的视图。

于 2013-01-03T13:38:01.717 回答