Django的views.py中的导入应该在哪里?

时间:2016-05-25 10:49:31

标签: python django import python-import

关于Web应用程序上的运行时间最少,在views.py

中保留导入的理想位置是什么

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

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,module1,模块2它有什么用?或条件if request.method == 'POST':失败?那是表格从未提交的时候。

在这些条件传递之后导入这些模块(因为实际需要它们时)会导致程序或webapp在这些条件失败时的运行时开销减少吗?在不需要时避免不必要的进口?

我的想法的Psuedo代码:

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

建议使用哪一个并在网站上获得最佳效果?

2 个答案:

答案 0 :(得分:4)

不要这样做。

没有理由像这样在代码中间导入。进口只进行一次;因为几乎可以肯定的是,在某些时候你的代码将遵循is_valid路径,你将需要导入,所以在那之前阻止导入没有任何好处。

事实上,这可能会使更少表现更好;而不是在流程启动时完成所有导入,您可以在某人的请求中进行此操作。

但无论如何,无论如何,差异可以忽略不计。为了便于阅读,请将您的导入放在最顶层。

答案 1 :(得分:-1)

文件顶部的导入模块完全正常,这样做recommended way

它不会增加任何运行时开销,因为导入只执行了一些,而不是每次请求(如PHP)。