这是问题所在:
在 Django views.py 之一中,我有以下代码:
from kml_generator import KML_generator
@login_required(login_url='/dev/login')
def search(request):
if request.POST:
result,SF=Validate(request, Activities)
val=result.values('id')
KML_generator(result1=val,user=request.user)
它基本上导入模块kml_generator
并从那里调用类KML_generator
。此类生成.kml
文件,然后在 OpenLayer 上显示。它按预期工作,但我想改变它。
现在:
为什么当我更改模块内部的代码时kml_generator
它不会影响行为?我尝试了所有错误,它仍然像魅力一样工作......
所以问题来了:
如何改变它?django 里面有某种"构建"、"编译"吗?是否需要调用它来影响代码?
附言。这一切都站在Apache上使用 wsgi.py
PS2.好吧,这对我来说很可怜,但我们得到了为我们开发了一个不错的动态django网站的副公司。现在我不知道为什么它不像我一样工作。
你需要重新启动 Apache 服务器,以便 Django 接收更改。
Python 在导入模块时只加载一次源文件。然后,编译的字节码将保存在内存中。在导入时,Python 还会将字节码缓存在原始源文件旁边的.pyc
文件中,您可以通过比较.py
上的时间戳和相应的.pyc
文件来验证是否已进行新的导入。
正常重新启动就足够了;在服务器上以 root 身份运行apache2ctl graceful
。
将来,你可能想要给自己一个开发设置;运行相同的代码(当然,来自VCS),但使用内置的Django开发服务器:
python manage.py runserver
Django 开发服务器会在你更改代码时尽最大努力重新加载代码。这只是一项开发功能(监视文件的变化会影响性能)。
最后但并非最不重要的一点是,尽量避免更改第三方库。改用子类化或猴子补丁,也许上游作者愿意为你实现新功能或接受补丁。这样,您也不必跨版本自行维护这些更改。