Я создаю веб-сервис для appengine, и я создал две функции внутри класса 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()
Это правильный способ сделать это? Если его нет, не могли бы вы рассказать мне, что не так в моем коде?
Спасибо!
Я просто понял это! Я все еще новичок на 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()
Это решило мою проблему. Спасибо за ваши ответы.
Вы пытаетесь передать глобальные объекты login
в register
register_function()
login
и register
в register_function()
, но это не глобальные объекты, они методы.
Я предполагаю, что вам нужно либо создать экземпляр этого класса, либо передать атрибуты этого объекта, либо вам нужно передать атрибуты класса, как предлагал комментатор.
WebService.login
иWebservice.register
?