• 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方法的第三个字典参数)

  • 相关阅读:
    JavaScript操作大全整理(思维导图六--运算符)
    JavaScript操作大全整理(思维导图五--变量)
    JavaScript操作大全整理(思维导图四--数据类型)
    JavaScript操作大全整理(思维导图三--函数基础)
    JavaScript操作大全整理(思维导图二--数组)
    JavaScript操作大全整理(思维导图一--DOM基本操作)
    JS实现金额转换(将输入的阿拉伯数字)转换成中文
    C# 操作Access数据库,导出数据到dmb文件
    获取html里面的所有image(src属性)
    Oracle数据库操作整理
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13328273.html
Copyright © 2020-2023  润新知