1

私はプログラミングが初めてです(まだ学生です)。私は独学で Python を学んでいて、ウェブサーバーでプログラムを実行しようとしましたが、私のような初心者向けの web2py を使用することにしました。プログラムはコマンド プロンプトから正常に実行されますが、作成した Web ページで print ステートメントを適切に実行しません。私は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

最後の 'return' だけが実際にページに表示されます。web2py を使用する場合にいくつかの異なる構文があることは知っていますが、私が見つけたサンプル コードはすべて、print str(DIV()) を使用して return、response.flash、response.print を示しているように見えます。と。また、「None」を返す「インデックスを返す」と、後で for ループによって出力されるはずの値が返されると思います。

「index()」関数は URL のリストを取得しますが、サポートする関数はかなり長いですが、エラーは返されませんでした。

4

2 に答える 2

1

何かをブラウザーに表示したい場合は、print を使用しないでください (つまり、Python シェルに出力するためです)。ブラウザーに何かを表示させたい場合は、関数がそれを行う必要があります (例外returnを発生させることもできます。これは、関数が応答を返したときに最終的にフレームワークが行うことです)。HTTP

まだ読んでいない場合は、この本の最初の数章を読んで、フレームワーク (および Web フレームワーク全般) がどのように機能するかをよりよく理解することを強くお勧めします。特に、ここここを見てください。

于 2012-12-20T03:08:06.123 に答える
0

コントローラーで print を直接使用しないでください。テンプレート構文を使用して印刷する必要があるビューとして、dictまたはビューに戻ることができます。str

于 2013-01-03T13:38:01.717 に答える