2013-06-26 146 views
3

使用Dajaxice我想将参数传递给python函数。dajaxice:将参数传递给python函数

在HTML文件中,我有以下声明

<a href="#" onclick="Dajaxice.myapp.sayhello(Dajax.process,{'dir':3})"> <i class="icon"></i></a> 

,在我ajax.ps文件我具备的功能

@dajaxice_register 
def sayhello(request, dir): 
    print(dir) 

它正常工作,如果我删除第二个参数DIR在两个html和python文件,但有了dir,我得到错误信息“出错了”。

有没有人知道这可能是什么问题?

+0

您是否试图在decorator中为sayhello函数指定'method ='GET''?只是为了检查。 – maulik13

+0

嗯,我想你在这里有一个观点。如果我用method ='GET'注册它,我得到错误消息: dajaxice_register()得到了一个意外的关键字参数'method'。你知道这是为什么吗?看起来安装可能有缺陷? – user695652

+0

这很奇怪。你知道调用堆栈中发生这种异常吗?你使用的是什么版本的dajaxice?在最新的GitHub代码中,我没有看到这样的例外,除非我错过了某些东西。 – maulik13

回答

1

,如果你使用Python 3 *,然后在模块dajaxIce进行更改文件VENV/lib目录/ python3.2 /站点包/ dajaxice/views.py

def safe_dict(d): 
     """ 
     Recursively clone json structure with UTF-8 dictionary keys 
     http://www.gossamer-threads.com/lists/python/bugs/684379 
     """ 
     if isinstance(d, dict): 
      return dict([(k, safe_dict(v)) for k, v in d.items()]) 
     elif isinstance(d, list): 
      return [safe_dict(x) for x in d] 
     else: 
      return d 
0

变化的SayHello到:

def sayhello(request): 
    my_dict=json.loads(request.POST['argv']) 
    dir=my_dict['dir'] 
    print(dir)