一、中间键的引入:
Django中间件(Middleware)是一个 轻量级、底层的 “插件”系 统,可以介入 Django的请求和响应处理过程, 修改 Django的输入或输出.
django中的中间键:
django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在 django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件.
自定义中间键文件可以放在改项目的任意可以导入的地方 (一般放在 app根目录里面)
一个中间键就是一个可调用的对象,他会接收一个 request并返回一个请求
自定义一个中间键可以是一个函数:
def xxx(get_response): # (中间键工厂)函数名自定义,传的这个参数必须是这个名字 # 这里写一次性的设置和初始化:在 start project 的时候执行的,只执行一次 def xx(request): # (中间键)函数名自定义,传的这个参数必须是这个名字 # 这里写处理请求之前的代码 # 视图将会被调用,或者后面的中间键会执行 response = get_response(request) # 处理请求响应之后的代码(视图已经被调用了) return response return xx # 返回自定义的中间键
激活(注册)中间键:在 setttings.py 文件里的 MIDDLEWARE 列表里添加自定义的中间键工厂 全路径(到中间键工厂;添加到最后)
例子:定义一个只能让谷歌浏览器访问的网站
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 # 返回自定义的中间键
自定义一个中间键也可以是一个类:(这个的实例可以被调用)
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 列表顺序来的;请求的时候从前往后(从第一个到最后一个);响应的时候从后往前(从最后一个到第一个)
二、上下文处理器:
所有页面都需要特定变量
自定义上下文处理器也可以放在该项目的任意可以导入的地方(一般放在 app根目录里面)
自定义上下文处理器也可以是一个函数:
def xxx(request): # 传入必须是 request 这个名字当参数 return {'key':'value'} # 必须返回一个字典类型的对象;获取用 key 就可以了
激活(注册):在 settings.py 文件里的 TEMPLATES 中的 OPTIONS 中的 'context_processors' 里面添加自定义的上下文处理器的全路径(添加到最后)
注意: 如果在视图( views)中有相同的 key 被传入,那么将会使用 该 views 中的key
中间键和上下文总结:
中间件是在用户请求到响应的过程中去加入一些额外的逻辑功能
上下文是给所有的模板增加变量
三、 django admin后台:
配置 admin.py 文件:
from django.contrib import admin from .models import 自定义表1,自定义表2 admin.site.register(自定义表1) admin.site.register(自定义表2)
创建超级管理员:(命令行在项目根目录输入)
python manage.py createsuperuser
需要:用户名;邮箱;密码
配置 url:(默认是配置好的)
进入 django后台:
浏览器输入: ip:端口/admin
输入刚刚新建的用户名,密码
设置中文和中国时间:
在 settings.py 文件里设置:
自定义管理页面:
- Django提供了admin.ModelAdmin类
- 通过定义 ModelAdmin的子类,来定义模型在Admin界面的显示方式
列表页属性:
- list_display:显示字段,可以点击列头进行排序;等于一个列表;
- list_display_links:点击该字段可以进入编辑页,可以写多个;等于一个列表
- list_filter:过滤字段,过滤框会出现在右侧;等于一个列表;
- search_fields:搜索字段,搜索框会出现在上侧;等于一个列表;
- list_per_page:分页,分页框会出现在下侧;等于一个整数(页数)
添加、修改页属性:
- fields:属性的先后顺序;等于一个列表
- fieldsets:属性分组;等于一个列表
注意:上面两个属性,二者选一。
注册的时候需要把它的管理类一起注册进去
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]