博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中间件和上下文处理器、djangoAdmin
阅读量:6266 次
发布时间:2019-06-22

本文共 2999 字,大约阅读时间需要 9 分钟。

中间件

中间件代码放到python任意的地方,能找到导入就行,这里放到app里

创建middleware.py文件,中间件的两种方法

#一个中间件是一个可调用的对象,接受一个request,返回一个请求#第一种:一个中间件可以是一个函数#实现功能:利用中间件实现:只有谷歌浏览器才让访问 通过user_agent区分from django.http import HttpResponseForbiddendef 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 adminfrom teacher.models import StudentDetail,Studentclass 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)

 如图所示:

 

转载于:https://www.cnblogs.com/taoge188/p/10562043.html

你可能感兴趣的文章
如何维护应用程序状态
查看>>
[Map 3D开发实战系列] Map Resource Explorer 之八--有什么用?怎么用?
查看>>
现代软件工程讲义 8 稳定阶段 (测试的计划和执行)
查看>>
Ubuntu 11.04 安装后要做的20件事情
查看>>
KlayGE 4.0中Deferred Rendering的改进(一):流水线
查看>>
6-4汉诺塔问题
查看>>
【转载】详解SQL2005/SQL2008动态生成分区脚本的方法
查看>>
构建高性能web之路------mysql读写分离实战(转)
查看>>
2012年网页设计趋势2
查看>>
atmega8 例程:INT1外部中断
查看>>
python类库32[多进程之Pool+Logging]
查看>>
现有portal项目(商业的和开源的)解决方案及优缺点
查看>>
集群(cluster)原理(转)
查看>>
Qt简介以及如何配置Qt使用VS2010进行开发
查看>>
html、html服务器控件和web服务器控件的区别
查看>>
8天玩转并行开发——第四天 同步机制(上)
查看>>
map 取最大value
查看>>
WCF中的异步实现
查看>>
Thrift之代码生成器Compiler原理及源码详细解析2
查看>>
java垃圾回收
查看>>