当我使用Django模板渲染器渲染页面时,我可以传入包含各种值的字典变量,以便在页面中使用它们进行操作{{ myVar }}.
有没有办法在Javascript中访问相同的变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够使用基于传入的变量中包含的值的AJAX查找来查找详细信息.
我有一个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) 我似乎无法在我的Windows 7 64Bit机器上正确构建boost :: python.它是c:\ Python26目录中的vanilla 32bit python 2.6.4.
Pastebin是调试版本输出:http: //pastebin.com/m7d70f13e
干杯,
人
我正在学习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)
然后我可以打电话给它.为什么是这样 ?我假设它与命名空间有关,但是阅读它我无法解决它.
一个