91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Django中views數據查詢使用locals()函數進行優化

發布時間:2020-10-19 06:46:40 來源:腳本之家 閱讀:197 作者:303donatello 欄目:開發技術

優化場景

利用視圖函數(views)查詢數據之后可以通過上下文context、字典、列表等方式將數據傳遞給HTML模板,由template引擎接收數據并完成解析。但是通過context傳遞數據可能就存在在不同的視圖函數中使用重復的查詢語句,所以可以通過將重復查詢語句設置全局變量,配合locals()函數進行數據查詢與傳遞。

優化前

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)

上面可以看到 views 里面有 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 中的 locals() 函數會以字典類型返回當前位置的全部局部變量,也就是返回當前 index() 、 threatshow() 視圖函數中定義的局部數據查詢結果,加上全局變量當中已經完成了其他剩余數據查詢,所以在滿足數據查詢需求的基礎上完成了視圖函數優化。

到此這篇關于詳解Django中views數據查詢使用locals()函數進行優化的文章就介紹到這了,更多相關Django locals()優化內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

井研县| 通城县| 康马县| 霍邱县| 元谋县| 南川市| 永寿县| 攀枝花市| 晋江市| 栾城县| 台中市| 济南市| 商城县| 甘谷县| 闽侯县| 冕宁县| 娄烦县| 清丰县| 什邡市| 苗栗市| 赤城县| 奉贤区| 桦南县| 土默特左旗| 麦盖提县| 洪洞县| 吉林省| 伊金霍洛旗| 洮南市| 理塘县| 承德县| 当阳市| 高邮市| 苗栗县| 新河县| 商丘市| 抚远县| 榆社县| 江永县| 吴桥县| 利辛县|