Не могу найти имя функции - PullRequest
       0

Не могу найти имя функции

1 голос
/ 29 августа 2011

Я создаю веб-сервис для 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()

Это правильный способ сделать это? Если нет, скажите, пожалуйста, что не так в моем коде ??

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Вы пытаетесь передать глобальные объекты login и register в register_function(), но это не глобальные объекты, а методы.

Я полагаю, вам нужно либосоздайте экземпляр этого класса и передайте атрибуты этого объекта, либо вам нужно передать атрибуты класса, как предложил комментатор.

0 голосов
/ 29 августа 2011

Я только что понял это!Я все еще новичок в 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()

Это решило мою проблему.Спасибо за ваши ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...