关于python:Django的views.py中的导入应该在哪里?

Where should imports be in Django's views.py?

本问题已经有最佳答案,请猛点这里访问。

对于Web应用程序上运行时间最少的情况,什么地方是保持我的导入在VIEWS.py中的理想位置?

假设我想用外部模块验证和处理一些表单条目。我的当前代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from django.shortcuts import render

from .forms import *

import re
import module1
import module2

def index(request):
    form = MyForm()
    if request.method == 'POST':
        form = MyForm(request.POST)

        if form.is_valid():
            #
            #Process my stuff here using re, module1, module2
            #

return render(request, 'index.html', context)

但是,如果条件if form.is_valid():失败,那么预先导入模块re、模块1、模块2有什么好处呢?或者条件if request.method == 'POST':失败?这就是从未提交表单的时候。

在这些条件通过后导入这些模块(因为这是实际需要的时候)会在这些条件失败时降低程序或webapp的运行时开销吗?在不需要时避免不必要的进口?

我的想法的psuedo代码:

1
2
3
4
5
6
7
if form.is_valid():
    import re
    #Perform some regex matches and stuff
    if (above re matches succeed):
        import module1
        #Process my stuff here using module1 here
        #and so on importing modules only when they are required

其中哪一个是推荐的,并将在网站上有最好的性能?


不要这样做。

没有理由在这样的代码中间导入。导入只执行一次;因为几乎可以肯定,在某个时刻,您的代码将遵循有效路径,所以您将需要该导入,因此在这之前停止导入没有好处。

实际上,这可能会降低它的性能;而不是在进程启动时完成所有导入,而是在某人请求的中间进行导入。

但不管怎样,两者之间的差异都可以忽略不计。为了便于阅读,请将导入的内容放在它们所属的位置,顶部。


文件顶部的导入模块完全可以,这是一种推荐的方法。

它不增加任何运行时开销,因为导入只做了一个,而不是在每个请求(如在PHP中)时。