小编AlM*_*ean的帖子

Django模板变量和Javascript

当我使用Django模板渲染器渲染页面时,我可以传入包含各种值的字典变量,以便在页面中使用它们进行操作{{ myVar }}.

有没有办法在Javascript中访问相同的变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够使用基于传入的变量中包含的值的AJAX查找来查找详细信息.

javascript python django google-app-engine django-templates

199
推荐指数
13
解决办法
19万
查看次数

如何使用python ctypes获取方法作为回调?

我有一个C api,我正在与python ctypes包接口.一切都很好,除了这个小小的花絮.

要将函数注册为某些通知的回调,我调用此函数:

void RegisterNotifyCallback( int loginId, int extraFlags, void *(*callbackFunc)(Notification *))
Run Code Online (Sandbox Code Playgroud)

所以在python我的代码看起来像:

CALLBACK = ctypes.CFUNCTYPE(None, ctypes.POINTER(Notification))
func = CALLBACK(myPythonCallback)
myLib.RegisterNofityCallback(45454, 0, func)
Run Code Online (Sandbox Code Playgroud)

如果myPythonCallback的值是FunctionType(即不是方法),它可以正常工作并使用正确的参数调用回调函数.如果它是一个MethodType,它仍会调用方法,但一旦方法完成,就会出现段错误.

编辑

澄清一下,当我说函数类型时,我的意思是将myPythonCallback定义为函数,

def myPythonCallback(Notification):
    ...do something with the Notification object i get passed in
Run Code Online (Sandbox Code Playgroud)

当我说它是一个MethodType时,我的意思是一个类方法:

class MyClass(object):
    def myPythonCallback(self, Notification):
        ...do something with Notification
Run Code Online (Sandbox Code Playgroud)

它爆炸了第二种类型.

这周围有一个轻松的地方吗?或者有人可以向我解释为什么会发生这种情况?

非常感谢,Al.

编辑

用GDB进一步挖掘我的方法:

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1544567712 (LWP 5389)] 0x555ae962 in instancemethod_dealloc (im=0x558ed644) at Objects/classobject.c:2360 2360    Objects/classobject.c: No such file or directory.
        in …
Run Code Online (Sandbox Code Playgroud)

python ctypes

12
推荐指数
2
解决办法
3889
查看次数

Boost :: Python Windows 7 64位

我似乎无法在我的Windows 7 64Bit机器上正确构建boost :: python.它是c:\ Python26目录中的vanilla 32bit python 2.6.4.

Pastebin是调试版本输出:http: //pastebin.com/m7d70f13e

干杯,

python 64-bit boost windows-7

5
推荐指数
1
解决办法
3311
查看次数

Clojure新手 - 命名空间的麻烦

我正在学习Clojure,到目前为止,我无法理解这个我确定基本荒谬的小难题.

我有这个文件:

(ns cloapp.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!")
  (println "Well Hi there, im a string !")
  (println "Why wont this work !")
  (myFunc "Hiya"))

(defn myFunc [aVar]
    (println aVar))
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行它,

lein run
Run Code Online (Sandbox Code Playgroud)

它抱怨并说,

Caused by: java.lang.RuntimeException: Unable to resolve symbol: myFunc in this context
Run Code Online (Sandbox Code Playgroud)

但是,如果我从main中删除对myFunc的调用并执行,

lein repl
cloapp.core=> (myFunc "Hiya !")
Hiya !
nil
cloapp.core=> 
Run Code Online (Sandbox Code Playgroud)

然后我可以打电话给它.为什么是这样 ?我假设它与命名空间有关,但是阅读它我无法解决它.

一个

clojure

4
推荐指数
1
解决办法
139
查看次数