Djangoのviewデータクエリはlocas関数を使って最適化します。
シーンを最適化する
ビュー関数(views)でデータを検索した後、コンテキストcontext、辞書、リストなどでHTMLテンプレートにデータを転送し、templateエンジンでデータを受信し、解析を完了することができます。しかし、contextを通じてデータを転送すると、異なるビュー関数で重複したクエリ文が使用される可能性がありますので、重複したクエリ文をグローバル変数に設定することで、locas()関数に合わせてデータクエリと転送を行うことができます。
最適化前
グローバル変数を設定
ここでは、Djangoのviewsデータの詳細については、locas関数を使って最適化された記事を紹介します。Django locas()の最適化については、以前の記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
ビュー関数(views)でデータを検索した後、コンテキストcontext、辞書、リストなどでHTMLテンプレートにデータを転送し、templateエンジンでデータを受信し、解析を完了することができます。しかし、contextを通じてデータを転送すると、異なるビュー関数で重複したクエリ文が使用される可能性がありますので、重複したクエリ文をグローバル変数に設定することで、locas()関数に合わせてデータクエリと転送を行うことができます。
最適化前
def index(request):
threatname = ' '
url = 'www.testtip.com'
allthreat = Threat.objects.all()
#
rec = Threat.objects.filter(rec__id=1)[:3]
#
threat_tags = Tag.objects.all()
#
context = {
'threatname': threatname,
'url': url,
'allthreat': allthreat,
'rec':rec,
'threat_tags':threat_tags,
}
# render templates
return render(request,'index.html',context)
def threatshow(request,tid):
allthreat = Threat.objects.all()
#
rec = Threat.objects.filter(rec__id=1)[:3]
#
threat_tags = Tag.objects.all()
#
hot_threat = Threat.objects.filter(hot__id=x)[:6]
# sitename&url&allarticle
context = {
'allthreat': allthreat,
'rec':rec,
'threat_tags':threat_tags,
'hot_threat':hot_threat,
}
return render(request, 'threatshow.html',context)
上にはviewの中にindex()とthreatshow()の二つのビュー関数があります。この二つのビュー関数の中には同じデータクエリ文が三つあります。
allthreat = Threat.objects.all()
#
rec = Threat.objects.filter(rec__id=1)[:3]
#
threat_tags = Tag.objects.all()
最適化後グローバル変数を設定
#
def global_variable(request):
allthreat = Threat.objects.all()
#
rec = Threat.objects.filter(rec__id=1)[:3]
#
threat_tags = Tag.objects.all()
return locals()
views , locals() :
def index(request):
threatname = ' '
url = 'www.testtip.com'
# render templates
return render(request,'index.html',locals())
def threatshow(request,tid):
#
hot_threat = Threat.objects.filter(hot__id=x)[:6]
return render(request, 'threatshow.html',locals())
Pythonのlocars関数は、辞書タイプで現在位置のすべての局所変数を返します。つまり、現在のindex()、threat show()ビュー関数で定義されているローカルデータクエリの結果を返します。グローバル変数に加えて、残りのデータクエリが完了しましたので、データクエリのニーズを満たす上で、ビュー関数の最適化が完了しました。ここでは、Djangoのviewsデータの詳細については、locas関数を使って最適化された記事を紹介します。Django locas()の最適化については、以前の記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。