一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 詳解Django中views數據查詢使用locals()函數進行優化

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

2020-08-24 23:55303donatello Python

這篇文章主要介紹了Django中views數據查詢使用locals()函數進行優化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

優化場景

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

優化前

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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() 兩個視圖函數,在這兩個視圖函數中有三個相同的數據查詢語句:

?
1
2
3
4
5
allthreat = Threat.objects.all()
  #推薦位的威脅情報
  rec = Threat.objects.filter(rec__id=1)[:3]
  #情報標簽
  threat_tags = Tag.objects.all()

優化后

設置全局變量

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 全局定義常用查詢數據參數
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()優化內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/303donatello/p/13548859.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品亚洲牛牛影视 | 成人猫咪maomiav永久网址 | 青柠影院在线观看免费完整版1 | 国产精品一区二区久久 | 亚洲第一二三四区 | 果冻传媒在线播放1 | 亚洲第一se情网站 | 久草草在线视视频 | japanese人妖xvideos | 欧美日韩一区二区三区韩大 | 校园高h| 我们日本在线观看免费动漫下载 | 韩国伦理hd | 日本连裤袜xxxxx在线视频 | 999国产| 国产亚洲视频在线 | 日本老师xxxxx18 | 欧美在线播放一区二区 | 蜜色网| 日韩欧美亚洲一区精选 | 星星动漫在线观看无删减 | 四虎国产精品免费入口 | 国产精品最新资源网 | 欧美一级乱妇老太婆特黄 | 久久亚洲午夜牛牛影视 | 国产午夜免费视频 | 亚洲电影成人 成人影院 | 91制片厂制作传媒免费版樱花 | 视频高清在线观看 | 天天爱天天插 | 91视频夜色| 色综合色狠狠天天久久婷婷基地 | bt国产| 母乳在线播放 | 丰满大屁股美女一级毛片 | 国产精品香蕉一区二区三区 | 久久免费黄色 | 国产小青蛙 | 香蕉成人国产精品免费看网站 | 大胸孕妇孕交pregnantsex 大象视频污 | 国产免费视频 |