当前位置:脚本大全 > > 正文

django部署(Django 中间键和上下文处理器的使用)

时间:2021-11-05 14:17:33类别:脚本大全

django部署

Django 中间键和上下文处理器的使用

一、中间键的引入:

django中间件(middleware)是一个 轻量级、底层的 “插件”系 统,可以介入 django的请求和响应处理过程, 修改 django的输入或输出.

django中的中间键:

django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

在 django项目的settings模块中,有一个 middleware_classes 变量,其中每一个元素就是一个中间件.

自定义中间键文件可以放在改项目的任意可以导入的地方 (一般放在 app根目录里面)

一个中间键就是一个可调用的对象,他会接收一个 request并返回一个请求

自定义一个中间键可以是一个函数:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • def xxx(get_response):  # (中间键工厂)函数名自定义,传的这个参数必须是这个名字
  •   # 这里写一次性的设置和初始化:在 start project 的时候执行的,只执行一次
  •   def xx(request): # (中间键)函数名自定义,传的这个参数必须是这个名字
  •     # 这里写处理请求之前的代码
  •     # 视图将会被调用,或者后面的中间键会执行
  •     response = get_response(request)
  •     # 处理请求响应之后的代码(视图已经被调用了)
  •     return response
  •   return xx  # 返回自定义的中间键
  • 激活(注册)中间键:在 setttings.py 文件里的 middleware  列表里添加自定义的中间键工厂 全路径(到中间键工厂;添加到最后)

    例子:定义一个只能让谷歌浏览器访问的网站

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • from django.http import httpresponseforbidden
  •  
  • def xxx(get_response):  # (中间键工厂)函数名自定义,传的这个参数必须是这个名字
  •  
  •   def xx(request): # (中间键)函数名自定义,传的这个参数必须是这个名字
  •     user_angent = reqeust.meta['http_user_agent'] # 获取请求的源信息中的 user_agent
  •     if not 'chrome' in user_agent.lower():  # 判断 chrome(谷歌浏览器) 在不在里面;忽略大小写(都用小写的)
  •       return httprespinseforbidden()
  •     response = get_response(request)
  •  
  •     return response
  •   return xx  # 返回自定义的中间键
  • 自定义一个中间键也可以是一个类:(这个的实例可以被调用)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • class xxx:  (中间键工厂)类名自定义
  •   def __init__(self,get_response):  # 传的这个参数必须是这个名字
  •     self.get_response = get_response
  •      # 这里写一次性的设置和初始化:在 start project 的时候执行的,只执行一次
  •   def __call__(self.request):
  •     # 这里写处理请求之前的代码
  •     # 视图将会被调用,或者后面的中间键会执行
  •     response = self.get_response(request)
  •     # 处理请求响应之后的代码(视图已经被调用了)
  •     return response
  • 激活(注册)中间键:在 setttings.py  文件里的 middleware  列表里添加自定义的中间键工厂 全路径(到中间键工厂;添加到最后)

    请求和响应顺序:

    按照 settings.py 文件 中的 middleware 列表顺序来的;请求的时候从前往后(从第一个到最后一个);响应的时候从后往前(从最后一个到第一个)

    django部署(Django 中间键和上下文处理器的使用)

    二、上下文处理器:

    所有页面都需要特定变量

    自定义上下文处理器也可以放在该项目的任意可以导入的地方(一般放在 app根目录里面)

    自定义上下文处理器也可以是一个函数:

  • ?
  • 1
  • 2
  • def xxx(request): # 传入必须是 request 这个名字当参数
  • return {'key':'value'# 必须返回一个字典类型的对象;获取用 key 就可以了
  • 激活(注册):在 settings.py 文件里的 templates  中的 options  中的 'context_processors' 里面添加自定义的上下文处理器的全路径(添加到最后)

    django部署(Django 中间键和上下文处理器的使用)

    注意: 如果在视图( views)中有相同的 key 被传入,那么将会使用 该 views 中的key

    中间键和上下文总结:

    中间件是在用户请求到响应的过程中去加入一些额外的逻辑功能

    上下文是给所有的模板增加变量

    三、 django admin后台:

    配置 admin.py 文件:

  • ?
  • 1
  • 2
  • 3
  • 4
  • from django.contrib import admin
  • from .models import 自定义表1,自定义表2
  • admin.site.register(自定义表1)
  • admin.site.register(自定义表2)
  • 创建超级管理员:(命令行在项目根目录输入)

  • ?
  • 1
  • python manage.py createsuperuser
  • 需要:用户名;邮箱;密码

    配置 url:(默认是配置好的)

    django部署(Django 中间键和上下文处理器的使用)

    进入 django后台:

    浏览器输入: ip:端口/admin

    输入刚刚新建的用户名,密码

    设置中文和中国时间:

    在 settings.py 文件里设置:

    django部署(Django 中间键和上下文处理器的使用)

    自定义管理页面:

    列表页属性:

    添加、修改页属性:

    注意:上面两个属性,二者选一。

    注册的时候需要把它的管理类一起注册进去

    django部署(Django 中间键和上下文处理器的使用)

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。

    原文链接:http://www.cnblogs.com/2018-8-31/p/10544048.html

    上一篇下一篇

    猜您喜欢

    热门推荐