中间件和上下文处理器djangoAdmin
Posted taoge188
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中间件和上下文处理器djangoAdmin相关的知识,希望对你有一定的参考价值。
中间件
中间件代码放到python任意的地方,能找到导入就行,这里放到app里
创建middleware.py文件,中间件的两种方法
#一个中间件是一个可调用的对象,接受一个request,返回一个请求 #第一种:一个中间件可以是一个函数 #实现功能:利用中间件实现:只有谷歌浏览器才让访问 通过user_agent区分 from django.http import HttpResponseForbidden def simple_middleware(get_response):#参数必须是get_response #一次性的设置和初始化 start project print(‘我是一次性设置000000‘) def middleware(request): #在每一个请求上都会调用 #处理请求之前被执行的代码 #视图将会被调用,或者后后面的中间件会执行 print(‘我在视图调用前调用了11111‘) user_agent = request.META[‘HTTP_USER_AGENT‘] #源信息 if not ‘chrome‘ in user_agent.lower(): return HttpResponseForbidden() response =get_response(request) #处理请求响应之后的代码 #视图已经被调用 print(‘视图已经被调用22222 ‘) return response return middleware # 第二种方式实现中间件,还可以使用一个类,并且它的实例可以被调用 class SimpleMiddleWare: def __init__(self,get_response):#必须有一个__init__初始化方法,必须有一个get_reponse方法 self.get_response = get_response #一次性的设置和初始化 start project print(‘我是一次性设置0000001‘) def __call__(self, request): #在每一个请求上都会调用 #处理请求之前被执行的代码 #视图将会被调用,或者后后面的中间件会执行 print(‘我在视图调用前调用了333333333333‘) response = self.get_response(request) #处理请求响应之后的代码 #视图已经被调用 print(‘视图已经被调用44444444444444 ‘) return response
激活中间件,设置到middleware的列表中
在settings.py中添加
MIDDLEWARE = [‘teacher.middleware.simple_middleware‘, ‘teacher.middleware.SimpleMiddleWare‘ ]
请求结果:
中间件还可以调用的方法:
上下文处理器
#上下文处理器就是一个python函数
#必须接受一个request参数,必须返回一个字典
如果context中定义了与上下文中相同名字变量,会覆盖上下文中定义的变量。
djangoAdmin
步骤:
1.在install_app中注册,默认都有
INSTALLED_APPS = [‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ]
设置template 中的,默认都有
‘context_processors‘: [‘django.contrib.auth.context_processors.auth‘, ‘django.contrib.messages.context_processors.messages‘, ]
3.中间件配置,默认都有
MIDDLEWARE = [‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ]
4.配置根url中配置admin.默认有
path(‘admin/‘, admin.site.urls),
如果没有这些,先把这些补全,然后做数据库迁移,在进行访问
第一个用户需要使用命令行创建:
然后从页面进行登录:
修改成中文,修改settings.py 中的语言配置
LANGUAGE_CODE = ‘zh-Hans‘#en-us
将创建的模型通过管理站点进行显示:
在admin.py文件中进行注册。文件中还进行了显示,索引,分组,分页过滤,查询等的功能展示。
from django.contrib import admin from teacher.models import StudentDetail,Student class StudentAdmin(admin.ModelAdmin): #显示列表的设置 list_display = [‘id‘,‘name‘,‘sex‘,‘qq‘,‘phone‘,‘c_time‘] #显示 list_display_links = [‘id‘,‘name‘] #索引 search_fields = [‘name‘,‘sex‘,‘c_time‘] #查询 list_filter = [‘sex‘,‘name‘] #过滤 list_per_page = 3 #分页 #详情页,添加页的设置 fields与fieldsets只能有一个存在 # fields = [‘name‘,‘qq‘] #分组 fieldsets = [ (None,{‘fields‘:[‘name‘,‘sex‘]}), (‘详细信息‘,{‘fields‘:[‘qq‘,‘phone‘,‘grade‘]}), (‘设置‘,{‘fields‘:[‘is_deleted‘]}), ] # Register your models here. admin.site.register(StudentDetail) admin.site.register(Student,StudentAdmin)
如图所示:
以上是关于中间件和上下文处理器djangoAdmin的主要内容,如果未能解决你的问题,请参考以下文章
AsyncTask 和 FragmentManager 的问题
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段