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

1

Я создаю веб-сервис для 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
    Вы пробовали WebService.login и Webservice.register ?
  • 1
    Вы действительно не хотите делать эти методы вашего RequestHandler. Конечно, вы вообще не можете запустить сервер на порте 8080 в App Engine, поэтому вы вообще не хотите этого делать.
Показать ещё 9 комментариев
Теги:
google-app-engine

2 ответа

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()

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

  • 1
    Вы действительно хотите начать служить в определении класса? Нет, ты не Возможно, это решило краткосрочную проблему, но это не правильно.
  • 0
    что вы предлагаете мне сделать ??
Показать ещё 1 комментарий
2

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

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

Сообщество Overcoder
Наверх
Меню