3

長い質問で申し訳ありませんが、私は混乱しており、何が必要なのか正確にはわかりません. したがって、何かを投稿する前に質問全体を読んで、より良いアイデアを得ることができます.

私はソフトウェア エンジニアリングの生協の学生ですが、上司は Tornado を使用して Web アプリケーションを開発するように求めています。私は高校でいくつかの html と css をやったことがありますが、これは本当に私の要素から外れています。

Tornado には、開始方法に関するチュートリアルがほとんどありません。確かに、Hello World の例はありますが、その後、チャット アプリケーションが破棄されます。私の場合は、バイナリで記述されている可能性があります。

tornado を使用してページをレンダリングし、データをパラメーターとして送信する方法を知っています。次に、そのデータを使用して、Web ページ自体 (データベース要求、ループなど) 内で何らかのロジックを実行できます。これで、関数を呼び出してテキストを書き込んだりアラートを作成したりするのに十分な Javascript を理解できました。

ここで、別の html ページに移動したい場合に問題が発生します。確かに、Javascript または html を使用して外部サイト (Google など) に移動できますが、同じディレクトリ内の関連ドキュメントに移動しようとすると、404 が返されます。上司は、POST を使用して調査するように求めています。 Tornado Server RequestHandler を呼び出すための GET 要求 (つまり、render をもう一度呼び出すことができます) ですが、その要求を作成/受信する方法がわかりません。

最後に、主な質問は 3 つあります。

  • Tornado を適切に使用するには、他にどの言語を知っておく必要がありますか?
    • 私はhtml、xslt、css、いくつかのJS、SQL、jsonを知っています
    • 私は Web の第一人者になりたいわけではありません。基本だけは欲しい
  • トルネード ハンドラーで GET/POST リクエストを行うにはどうすればよいですか?
  • 相対 HTML ページにリダイレクトするにはどうすればよいですか?

これは私が使用している私のハンドラーです:

class MainHandler(RequestHandler):

    def get(self):
        print 'get...',
        self.render('test.html', data = Data())
        print 'done'


    def post(self):
        print 'post...',
        pass
        print 'done'

編集: RequestHandlers についてもう少し学びましたが、それらを行う適切な方法がわかりません。この RequestHandler で 2 つのページのリクエストを処理していますが、ページごとに 1 つのハンドラーを使用できるようにしたいと考えており、引数を最適な方法で解釈しているかどうかわかりません。また、引数を *args パラメータに渡す方法もわかりません。

def get(self, *args, ** kwargs):
    print 'get:', args, kwargs, 'Handling:',

    if len(self.get_arguments('user')) > 0:
        print 'user'
        self.render('page2.html', user = self.get_arguments('user')[0])
    elif len(self.get_arguments('page')):
        print 'specific page:', self.get_argument('page')
        self.render(self.get_argument('page'), data = Data())
    else:
        print 'default'
        self.render('test.html', data = Data())
4

1 に答える 1

9

アプリケーションを定義するときに、テンプレート ディレクトリと静的ファイル ディレクトリを指定できます。

import Settings

class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r"/", MainHandler),
        ]
        settings = {
            "template_path":Settings.TEMPLATE_PATH,
            "static_path":Settings.STATIC_PATH,
            "debug":Settings.DEBUG
        }
        tornado.web.Application.__init__(self, handlers, **settings)

Settings.py を定義できます

import os
DEBUG = True
DIRNAME = os.path.dirname(__file__)
STATIC_PATH = os.path.join(DIRNAME, 'static')
TEMPLATE_PATH = os.path.join(DIRNAME, 'template')

ここに画像の説明を入力

竜巻の開始 URL にアクセスしようとすると、次のようになります。

http://localhost:port/ 

Tornado は MainHandler で get メソッドを実行します。次に、Tornado が test.html ページをレンダリングします。ただし、このテンプレートを取得できる場所を Tornado に示すために、TEMPLATE_PATH を指定する必要があります。

class MainHandler(RequestHandler):

    def get(self):
        print 'get...',
        self.render('test.html', data = Data())
        print 'done'

ハンドラーの get または post メソッドでリダイレクトを行うには、これを追加できます。

self.redirect("/my_new_page.html")

Tornado を適切に使用するには、Web アプリケーションがどのように機能するかを理解する必要があります。クライアント/サーバー通信、HTML 動詞の理解、およびより重要な試行錯誤

于 2013-02-12T08:48:07.530 に答える