找不到功能名称

时间:2011-08-28 20:29:26

标签: python google-app-engine

我正在为appengine创建一个web服务,我在WebService.py类中创建了两个函数。我正在尝试在SimpleXMLRPCServer对象中注册这些函数。但是当我将函数名称传递给参数时,它表示未定义的变量。

以下是代码:

import SimpleXMLRPCServer

from google.appengine.ext import webapp
from google.appengine.ext import db

class WebService(webapp.RequestHandler):
    def login(self, username, password):

        calls = db.GqlQuery("SELECT * from User ORDER BY username DESC LIMIT 10")

        for call in calls:
            if calls.username == username and calls.password == password:
                return True
        return False

    def register(self, username, password):

        db.GqlQuery("INSERT into User (username, password) value(%s, %s)"%(username, password))
        return True

 server = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost',8080))
 server.register_function(login)
 server.register_function(register)
 server.serve_forever()

这是正确的方法吗?如果没有,你能告诉我我的代码有什么问题吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您正在尝试将全局对象loginregister传递给register_function(),但这些对象不是全局对象,而是方法。

我假设您需要实例化该类并传递该对象的属性,或者您需要按照评论者的建议传递该类的属性。

答案 1 :(得分:0)

我刚想通了!我仍然是python的新手,所以这是一个新手怀疑。

看起来问题出在身份上。我需要把它放在类标识中,所以它可以找到方法。

事实上,它应该是这样的:

import SimpleXMLRPCServer

from google.appengine.ext import webapp
from google.appengine.ext import db

class WebService(webapp.RequestHandler):
    def login(self, username, password):

        calls = db.GqlQuery("SELECT * from User ORDER BY username DESC LIMIT 10")

        for call in calls:
            if calls.username == username and calls.password == password:
                return True
        return False

    def register(self, username, password):

        db.GqlQuery("INSERT into User (username, password) value(%s, %s)"%(username, password))
        return True

    server = SimpleXMLRPCServer.SimpleXMLRPCServer(('localhost',8080))
    server.register_function(login)
    server.register_function(register)
    server.serve_forever()

这解决了我的问题。谢谢你的回复。