在Django的ipython shell中,%autoreload的正确配置是什么?

11 浏览
0 Comments

在Django的ipython shell中,%autoreload的正确配置是什么?

Ipython有一个名为autoreload的插件,据说在每个命令之后重新加载所有模块,这样你就可以更改源代码,而不必退出shell并重新输入所有命令。参见http://dsnra.jpl.nasa.gov/software/Python/tips-ipython.html的示例。\n然而,当与Django一起使用时,这似乎最多也只是一个不靠谱的功能。\n比如,运行python manage.py shell会给我一个带有Django上下文的IPython shell,但是自动重新加载似乎根本不可靠。\n这是我在ipy_user_conf.py文件中添加的内容:\n

\ndef main():\n    ... # 其余的功能在这里\n    import ipy_autoreload\n    ip.magic(\'%autoreload 2\')\n

\n自动重新加载在有限的情况下有效,可能只有10-20%的时间。\n有人成功地配置过这个与Django一起使用吗?

0
0 Comments

从上述内容中,我们可以得出以下问题的原因和解决方法:

问题:在Django的ipython shell中,%autoreload的正确配置是什么?

原因:Django会自己维护一个模型(model)的缓存,如果想要重新加载所有模型,就需要手动清除这个缓存。

解决方法:可以参考这个回答,在代码中加入以下配置:

%load_ext autoreload

%autoreload 2

这样就可以重新加载模型并更新缓存了。

0