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



这是问题所在:

在 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 开发服务器会在你更改代码时尽最大努力重新加载代码。这只是一项开发功能(监视文件的变化会影响性能)。

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

最新更新