django部署(Django 中间键和上下文处理器的使用)
django部署
Django 中间键和上下文处理器的使用一、中间键的引入:
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:属性分组;等于一个列表
注意:上面两个属性,二者选一。
注册的时候需要把它的管理类一起注册进去
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:http://www.cnblogs.com/2018-8-31/p/10544048.html
- django变量怎么使用(django的settings中设置中文支持的实现)
- django 如何实现高并发(Django如何防止定时任务并发浅析)
- django操作数据库(详解django+django-celery+celery的整合实战)
- django条件序列化(Django之无名分组和有名分组的实现)
- django admin 开发实例(Django给admin添加Action的步骤详解)
- django 后台管理office文件(django admin后台添加导出excel功能示例代码)
- django响应返回的常用方法(Django异步任务之Celery的基本使用)
- django url配置失效(解决Django生产环境无法加载静态文件问题的解决)
- django 页面传参数(django query模块)
- django中的limit用法(如何在Django中添加没有微秒的 DateTimeField 属性详解)
- django部署(Django 中间键和上下文处理器的使用)
- django环境变量菜鸟教程(Django 多环境配置详解)
- pythondjango搭建web(PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上)
- django用户权限管理(Django 内置权限扩展案例详解)
- django中间件路径校验(Django中使用Whoosh进行全文检索的方法)
- django路由原理(详解django中url路由配置及渲染方式)
- 释小龙晒杀青照片 多重身份惹观众期待(释小龙晒杀青照片)
- 《九牛之人降魔传》开机 演员祁高坤化身九牛之人除魔卫道(九牛之人降魔传开机)
- 王铲铲的致富之路无限金币卡法攻略教学(王铲铲的致富之路无限金币卡法攻略教学)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
热门推荐
- python3字符串格式化怎么操作(python3实现字符串操作的实例代码)
- xm文档使用教程(xmapp环境搭建注意事项说明)
- mysql判断表中字段是否存在(mysql插入前判断数据是否存在的操作)
- sqlserver附加数据库时出错(SQL Server数据库附加失败的解决办法)
- 为什么mysql主键要设置自增列(浅谈MySQL中的自增主键用完了怎么办)
- vueaxios使用教程交流(Vue使用axios图片上传遇到的问题)
- linux系统安装宝塔面板启动失败(Linux云主机安装宝塔面板新手教程)
- 查sqlserver锁表语句(Sql Server如何查看被锁的表及解锁的方法)
- jquery中filter
- docker compose使用方法(docker和docker-compose一键安装教程支持在线和离线)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9