Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';找不到函数名_Python_Google App Engine - Fatal编程技术网

Python Can';找不到函数名

Python Can';找不到函数名,python,google-app-engine,Python,Google App Engine,我正在为appengine创建一个webservice,并且在类webservice.py中创建了两个函数。我试图在SimpleXMLRPCServer对象中注册这些函数。但当我将函数名传递给参数时,它会显示未定义的变量 代码如下: import SimpleXMLRPCServer from google.appengine.ext import webapp from google.appengine.ext import db class WebService(webapp.Reque

我正在为appengine创建一个webservice,并且在类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()
这样做对吗??如果不是,你能告诉我我的代码有什么错误吗


谢谢大家!

您试图将全局对象
login
register
传递给
register\u function()
,但这些不是全局对象,而是方法


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

我刚刚解决了这个问题!我还是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()

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

您是否尝试了
WebService.login
WebService.register
?您真的不想让这些方法成为您的RequestHandler。当然,你根本无法在App Engine的8080端口上运行服务器,所以你根本不想这样做。你需要决定你在做什么——构建一个App Engine应用程序,或者一个SimpleXMLRPCServer应用程序。试着让它们成为免费的/模块级函数(没有
self
),然后在服务器上注册它们——也就是说,如果你想要的是SXRS而不是GAE,我可能会误解——为什么你想同时使用SXRS和webapp?你真的想开始在类定义中提供服务吗?不,你没有。这可能解决了短期问题,但并不正确。请参阅我对该问题的回答。您可以使用appengine执行xmlrpc,但不能这样做。