ウェブアプリケーションでのランタイムの最小化に関して、views.pyでインポートを保存するには理想的な場所ですDjangoの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():
が失敗した場合に、手前に、モジュールの再、モジュール1、モジュール2をインポートしてしているのですか?または条件if request.method == 'POST':
が失敗しますか?それはフォームが決して提出されなかったときです。
これらの条件が満たされた後でこれらのモジュールをインポートすると、実際に必要なときにこれらのモジュールをインポートすると、これらの条件が失敗したときに実行時のオーバーヘッドが少なくなります。不要な輸入を避けることができますか?私の考えの
擬コード:
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
これらのいずれかが推奨されており、ウェブサイト上で最高の性能を持っているでしょうか?
ありがとう、私はここでは内部の動作の任意のアイデアはありませんが、ユーザーがボタンをフォーム上でクリックすると、再度インポートが実行されることはありませんか? views.pyはもう一度呼び出されませんでしたか? – MohitC
はいビュー*関数*が再度呼び出されます。しかし、それは輸入が再び行われることを引き起こさないだろう。それらはファイルに対してグローバルです。たとえそうであったとしても、Pythonは既にインポートされているときにモジュールを再インポートしません。 –
ありがとうございます。 – MohitC