为什么更改.py文件不会影响django网站的行为?

时间:2013-10-15 09:29:41

标签: python django apache

问题在于:

在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文件,然后在OpenLayers上显示。它可以正常工作,但我想改变它。

现在:

为什么当我更改模块kml_generator中的代码时,它不会影响行为?我尝试了所有我甚至把它放在那里的错误,它仍然像魅力一样....

所以这就是问题:

如何改变? django有什么样的'build','compile'里面?我是否需要调用它来影响代码?

PS。它全部使用wsgi.py

站在Apache上

PS2。好吧,这对我来说很可怜,但我们有一家公司为我们开发了一个很好的动态django网站。而现在我不知道为什么它不会像我一样工作。

1 个答案:

答案 0 :(得分:4)

您需要重新启动Apache服务器以便Django接收更改。

Python导入模块时只加载源文件一次。然后将编译后的字节码保存在内存中。在导入时,Python还会将字节码缓存在原始源文件旁边的.pyc文件中,您可以通过比较.py上的时间戳和相应的{{1}来验证是否发生了新的导入。文件。

优雅的重启应该足够了;在您的服务器上以root身份运行.pyc

将来,您可能希望自己进行开发设置;运行相同的代码(当然是从VCS),但使用内置的Django开发服务器:

apache2ctl graceful

Django开发服务器在您更改代码时会尽力重新加载代码。这只是开发功能(观看更改费用性能的文件)。

最后但同样重要的是,尽量避免更改第三方库。改为使用子类化或monkeypatching,也许上游作者愿意为您实现新功能或接受补丁。这样您就不必在不同版本中自行维护这些更改。