使用CherryPy的简单形式

时间:2014-11-20 11:08:57

标签: python forms submit cherrypy

我想添加一个显示单个文本区域的简单表单。

当用户提交表单时,我需要调用一个检查数据有效性的函数并详细说明。

我已经以这种方式在页面中添加了表单:

<td><form method = "get" action = "getnote"> <input type="text" name="note"/> <button type="submit"><img src="/img/validate.jpg" width="20" height="20" /></button></form></td>

使用getnote我想调用一个函数getnote(注释)来检查有效性并将其保存在数据库中。

然后我有:

class HelloWorld(object):
@cherrypy.expose
def index(self):
    return "Hello world!"


@cherrypy.expose
def getnote(self, note):
    #check and save
getnote.exposed = True

@cherrypy.expose
def HomeP(self):

    Session = sessionmaker()
    session = Session(bind=engine)


    template = loader.load('index.html')
    title = "Home page"
    ctx = Context(title=title)
    return template.generate(ctx).render('html', doctype='html')

然后在localhost / HomeP中有表单并且显示正确,当我填写表单并提交时,浏览器显示路径错误&#34; HomeP / getnote /&#34;失踪。但是我想把getnote称为函数而不是页面!

我已经按照本教程进行了操作,但也许我错过了一些内容: http://cherrypy.readthedocs.org/en/latest/tutorials.html#tutorial-4-submit-this-form

由于

1 个答案:

答案 0 :(得分:0)

您确实需要了解所处理技术的基础知识。而StackOverlow的基础是提出好的问题,因此它们对其他人来说是可理解的和有用的。

您有相对表单操作action='getnote',它告诉浏览器将其附加到当前路径名。这就是您将表单提交给/HomeP/getnote/的原因。请改为使用绝对操作,action='/getnote'

即使你的“但我想将getnote作为一个函数调用而不是作为一个页面!”听起来像一个废话,我想我有一个想法在哪里指导你。了解AJAX,最终您将能够在后台发送表单。