我想创建一个使用JSON-RPC的简单Django(1.3)项目。我使用这个实现:
这是我的项目文件:
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
我收到这样的回复:
错误:
这里有什么问题?这似乎是一个简单的过程,但它对我不起作用。
答案 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')
只是那个!
感谢所有人。