1. 程式人生 > 實用技巧 >Django學習筆記(5)上下文管理器

Django學習筆記(5)上下文管理器

上下文管理器
  view.py檔案定義的方法,實際工作中會出現很多重複的程式碼,這個部分就可以使用上下文管理器來處理這些共用的內容

  如下:部落格首頁index需要展示catagories文章分類和article文章,index和category方法中的catagories和article 變數 程式碼是相同的,這部分就可以使用上下文管理器優化

 1 from django.shortcuts import render
 2 from .models import Category,Article
 3 # Create your views here.
 4 def index(request):#
首頁 5 #資料來源資料庫時,要引用到這個表的這個類 6 catagories = Category.objects.filter(is_delete=False)#獲取所有資料 7 article = Article.objects.filter(is_delete=False) 8 data = {'nav':catagories,'articles':article} 9 return render(request,'index.html',data)#引用資料需要通過字典data引用 10 11 def category(request,id):#
文章分類 12 catagories = Category.objects.filter(is_delete=False)#獲取所有資料 13 article = Article.objects.filter(is_delete=False,category_id=id) 14 data = {'nav':catagories,'articles':article} 15 return render(request,'index.html',data)

寫上下文管理步驟:

  1.在應用user目錄中定義檔名為process_content.py檔案,檔名可自定義,路徑也可以在其他路徑下

  2.編輯process_content.py檔案,將共用的程式碼定義為方法,寫在檔案中

  

from . import models

def category_process(request):
    # print('categroy_process....')除錯用
    categoies = models.Category.objects.filter(is_delete=False)
    return {'nav':categoies}

  3.settings.py檔案 找到TEMPLATES ->OPTIONS ->context_processors,在後面追加上面步驟的檔案路徑

  

  4.修改view.py中的程式碼

  

from django.shortcuts import render
from .models import Category,Article
# Create your views here.
def index(request):#首頁
    #資料來源資料庫時,要引用到這個表的這個類
    # catagories = Category.objects.filter(is_delete=False)#獲取所有資料
    article = Article.objects.filter(is_delete=False)
    data = {'articles':article}
    return render(request,'index.html',data)#引用資料需要通過字典data引用

def category(request,id):#文章分類
    # catagories = Category.objects.filter(is_delete=False)#獲取所有資料
    article = Article.objects.filter(is_delete=False,category_id=id)
    data = {'articles':article}
    return render(request,'index.html',data)

上下文管理器原理:系統在呼叫view.py的方法後,會自動去setting.py中檢索上文管理器,並將上下文管理中的方法返回值(返回的是字典),自動追加到view.py的data中(data 是render方法的第三個字典引數)