2014-02-03 8 views
0

Я хочу создать простой проект Django (1.3), который использует JSON-RPC. Я использую эту реализацию:Django JSON_RPC не работает

django-json-rpc

и это мои файлы проекта:

urls.py:

from django.conf.urls.defaults import patterns, include, url 
from myapp.views import * 
from jsonrpc import jsonrpc_site 

urlpatterns = patterns('', 
        url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), 
        url(r'^json/', jsonrpc_site.dispatch, name="jsonrpc_mountpoint"), 
        (r'^json/(?P<method>[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch), 
) 

views.py:

from jsonrpc import jsonrpc_method 

@jsonrpc_method('sayHello') 
def hello(request, name='Lester'): 
    return "Hello %s" % name 

когда я проверить этот код в браузере JSON-RPC (включен в библиотеку) не работает. Whe это хотите добавить этот импорт в оболочке:

from jsonrpc.proxy import ServiceProxy

я получаю ответ, как это:

Error:

что здесь проблема? это простой процесс, но он не работает для меня.

ответ

1

Я нашел решение. на самом деле json-rpc работает, но в браузере JSON-RPC мне приходится иметь дело с некоторой разницей, чем обычный. согласно here, мы должны инициализировать и называть JSON-RPC методы, как это:

from jsonrpc.proxy import ServiceProxy 
s = ServiceProxy('http://localhost:8080/json/') 
s.myapp.sayHello('Sam') 

, но это не так! этот метод верен, когда мы используем его в оболочке django или в нашем главном коде! в браузере JSON-RPC нам просто нужно вызвать наш метод следующим образом:

jsonrpc.sayHello('sam') 

только это!

спасибо всем.