关于django的一些笔记和细节(关于请求的接收与响应方面的细节,后续要完善)

前言:本次只是简单记录一下关于django的请求的接收与响应的一些常见的知识点,后续再深入的探讨。

一:关于请求的接收:

1:django是一个程序默认开启了对8000端口的访问监听,任何请求访问这里都会进行判断,处理或拒绝

2:关于谁能请求:django的setting文件中,ALLOWED_HOSTS = []表示谁能访问,其他ip都会被拒绝。如果是
ALLOWED_HOSTS = ["*"]则代表任何人都可以访问。

3:关于路由:由这些东西掌控:setting文件中的ROOT_URLCONF = 'mysite.urls';容器应用中的:urls.py
文件;以及普通子应用中的urls.py文件。容器应用中的urls.py文件会通过include函数,将带有固定请求路由前
缀的路由转发到固定子应用。

4:关于中间件MIDDLEWARE。中间件的功能非常强大,可以用于请求的接收与响应。通过setting文件中的MIDDLEWARE进行设
置,不需要的中间件可以去掉,当然也可以自定义的。

5:关于接收get请求中的参数:当请求路由到你的函数是,会有一个request参数,通过这个参数可以取出来
eg:request.GET.get('id',default='110')

6:关于接收post请求中的参数:当请求路由到你的函数是,会有一个request参数,通过这个参数可以取出来
对了,关于接受请求,千万不要用request.POST  这样接受的数据,是有可能不全的,因为它指挥接受str类型的数
据,如果是list类型,则只会接收list中的最后一个值.

eg:requestDict = request.body

7:关于获取django中的请求头参数,因为django会在原来的http请求头的一些参数上加上http,所以这个要具体情况具体分析了。
使用META即可访问request中的请求头信息
eg: request.META.get(name) 
如果你不会分析,那就直接获取META然后响应到前端直接查看复制就ok,工具的使用还是要思维灵活一点的.

二:关于请求的响应:

1:关于响应,你可以使用django自带的很多种响应类型。也可以自己封装适合自己的响应方式,但是一定要写好注释.
eg: JsonResponse;HttpResponse;FileResponse;StreamingHttpResponse

2: 关于设置响应体:
def detai1(request, question_id):
    response = HttpResponse()
    response['hhh'] = 'hhh'
    response['Access-Control-Expose-Headers'] = "*"
    response["Version"] = "2"
    response["Version_old"] = "1"
    return HttpResponse("You're looking at question %s." % question_id)

3: 也可以使用MIDDLEWARE对响应进行处理,

三: 如果只是简单的使用这些应该已经够了,代码确实是好写,但是出了问题一般人解决起来会很费力,大佬和咱们的差距不仅仅是写代码的差距, 最主要的是经验和思想,基础知识,思考方式的差距.另外,MIDDLEWARE的使用也是可以很巧妙的解决一些问题的.这个方式非常棒,在java方面的springWeb中也有体现…

四: 感叹:

1: 优秀的框架设计是真的是非常棒的,我也是最近才真正的体会到,因为工作中慢慢负责的代码重要了起来,不再是简
单的增删改查,所以这时候你负责的功能和代码会有一些特殊 当你去设计这些东西的时候,而这时候却没有响应的框
架为你服务,当你自己写代码的时候,你就会在一次次的碰壁中慢慢发现,设计模式,IOC,AOP代表着什么.~, 你会
现,这就是前人的智慧,巨人的肩膀. 是的最后的目的就是要让你在开发的时候更加灵活,考虑的事情更少,更加的易于
修改维护.代码的复用性高了,不需要再去重复的写同一段代码.


2: 其实我们需要学习的东西并不多,大学四件套就是:  (再往后才是细分的东西,软件工程,C,java语言什么的)
1: 计算机组成原理;
2: 计算机网络;
3: 计算机编程设计;
4: 操作系统,
这四件套我认为是任何计算机专业的人都要熟知的,不管你是运维,前端,后端,测试还是其他.
同样,当你在拥有这些知识的时候,你再学习一些工具的时候会非常简单,这是必然的!!!
你可能觉得有的人学习东西特别快,不妨去想想他们为啥这样.
是不是有经验(积累,总结,并且思考)
思维能力(这是可以锻炼的)
基础知识(是可以学习的嘛.)

五: 关于django如何获取HTTP请求中的参数:

    1: request.META.get("header key") 用于获取header的信息
    2: 注意的是header key必须增加前缀HTTP,同时大写,例如你的key为username,那么应该写成:request.META.get("HTTP_USERNAME")
    3: 另外就是当你的header key中带有中横线,那么自动会被转成下划线,例: User-Agent的写成: request.META.get("HTTP_USER_AGENT")

六: 关于django中间件

Django 中间件是修改 Django request 或者 response 对象的钩子,可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。
浏览器从请求到响应的过程中,Django 需要通过很多中间件来处理,可以看如下图所示:

在这里插入图片描述Django 中间件作用:

修改请求,即传送到 view 中的 HttpRequest 对象。
修改响应,即 view 返回的 HttpResponse 对象。
中间件组件配置在 settings.py 文件的 MIDDLEWARE 选项列表中。

配置中的每个字符串选项都是一个类,也就是一个中间件。
Django 默认的中间件配置:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

自定义中间件:(有如下函数)(具体见菜鸟驿站)
process_request(self,request)
process_view(self, request, view_func, view_args, view_kwargs)
process_exception(self, request, exception)
process_response(self, request, response)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值