亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

詳解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

龙口市| 四子王旗| 柳州市| 德格县| 廉江市| 太原市| 伊宁市| 万州区| 锡林郭勒盟| 霍林郭勒市| 尉犁县| 上栗县| 石柱| 开鲁县| 都江堰市| 内丘县| 丰镇市| 将乐县| 孝昌县| 伊宁县| 都兰县| 论坛| 葵青区| 东城区| 集贤县| 杭锦旗| 陈巴尔虎旗| 买车| 南郑县| 平远县| 宜章县| 龙游县| 南宫市| 金阳县| 漠河县| 北碚区| 山东| 许昌市| 巩留县| 邓州市| 昭觉县|