Hello world Pyamf маленькое сообщение об ошибке - PullRequest
1 голос
/ 10 марта 2009

Привет, я пытаюсь связать flex с django с Pyamf

В качестве первого шага я попробовал базовый Hello World http://pyamf.org/wiki/DjangoHowto

Но это приводит к ошибке.

Я использую Django 1.0.2

amfgateway.py в корневой папке моего проекта (тот же уровень, что и настройки)

import pyamf
from pyamf.remoting.gateway.django import DjangoGateway
from django.contrib.auth.models import User

pyamf.register_class(User, 'django.contrib.auth.models.User')

def get_users(requet):
    return User.objects.all()

def echo(request, data):
    return data

services = {
    'myservice.echo': echo,
    'myservice.get_users': get_users,
}

edoGateway = DjangoGateway(services, expose_request=False)

In urls.py

urlpatterns = patterns('',

    # test pyamf
    url(r'^gateway/', 'amfgateway.edoGateway'),
    ...
)

Затем, когда я тестирую пример с клиентом pyamf

from pyamf.remoting.client import RemotingService

gw = RemotingService('http://127.0.0.1:8000/gateway/')
service = gw.getService('myservice')

print service.echo('Hello World!')

Я получаю

ErrorFault level = код ошибки = 500 type = u'AttributeError 'description = u "Не удается найти представление для пути ['/ gateway / myservice / echo'] объект 'DjangoGateway' не имеет атрибута ' nam е » Проследить: u "Не удается найти представление для пути ['/ gateway / myservice / echo'], объект 'DjangoGateway' ha s без атрибута ' name ' "

Ответы [ 2 ]

3 голосов
/ 10 марта 2009

Я думаю, вам может понадобиться убрать параметр запроса из вашего echo def, по крайней мере, метод на сайте примера pyamf не имеет этого параметра в методе

2 голосов
/ 05 декабря 2009

Хотя ошибка не связана, JMP верен - у вас на шлюзе expose_request=False, а определение службы для echo имеет первый аргумент в качестве объекта запроса Django Http.

Это не сработает, однако PyAMF допускает некоторую детализацию здесь, вы можете использовать декоратор expose_request, например ::

from pyamf.remoting.gateway import expose_request

@expose_request
def echo(request, data):
    return echo
...