Django JSON_RPC不起作用

时间:2014-02-03 21:58:03

标签: python json django json-rpc

我想创建一个使用JSON-RPC的简单Django(1.3)项目。我使用这个实现:

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想要在shell中添加此导入:

  

来自jsonrpc.proxy导入ServiceProxy

我收到这样的回复:

  

错误:

这里有什么问题?这似乎是一个简单的过程,但它对我不起作用。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。事实上json-rpc可以工作但是在JSON-RPC浏览器中,我必须采用与常规方式不同的方式来处理。根据{{​​3}},我们应该初始化并调用json-rpc方法,如下所示:

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

但事实并非如此!当我们在django shell或我们的主代码中使用它时,这个方法是正确的!在JSON-RPC浏览器中,我们只需要调用我们的方法:

jsonrpc.sayHello('sam')
只是那个!

感谢所有人。