我正在与Tornado开始进行Web开发。需要一些初学者的帮助

时间:2013-02-11 19:57:00

标签: web-applications tornado

很抱歉这个问题很长,但我很困惑,并且不知道我到底需要什么。因此,请在发布任何内容之前仔细阅读整个问题,以便更好地了解。

所以,我是一名工作期间的软件工程合作学生,我的老板希望我使用Tornado开发一个Web应用程序。我在高中时已经完成了一些html和CSS,但这确实不属于我的要素。

Tornado几乎没有关于如何入门的任何教程。当然,这是一个hello world示例,但后来他们抛出了一些聊天应用程序,在我的情况下,也可以用二进制编写。

我知道如何使用tornado渲染页面并将数据作为参数发送。然后我可以使用该数据在网页本身内做一些逻辑(即数据库请求,循环,......)我现在知道足够的Javascript来调用函数来写文本或发出警报。

现在问题出现在我想去另一个html页面的地方。当然,我可以使用Javascript或html转到外部网站(即Google),但如果我尝试转到同一目录中的相关文档,我只会得到404.我的主管要我调查使用POST和GET请求调用我的Tornado Server RequestHandler(所以我可以再次调用render),但我无法弄清楚如何发出/接收该请求。

最后,有三个主要问题:

  • 我应该知道哪些其他语言才能正确使用龙卷风?
    • 我知道html,xslt,css,一些JS,SQL,json
    • 我不想成为网络大师;我只想要基础
  • 如何在龙卷风处理程序上发出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处理请求,但我希望能够为每个页面使用一个处理程序,我不知道我是否以最佳方式解释参数。我也不知道如何将参数转到* 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())

1 个答案:

答案 0 :(得分: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')

enter image description here

当你试图到达你的龙卷风开始网址时:

http://localhost:port/ 

Tornado在您的MainHandler中执行您的get方法。然后Tornado呈现test.html页面。但您必须指定TEMPLATE_PATH以指示Tornado可以获取此模板的位置。

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动词和更重要的尝试和尝试