django的htpp请求之WSGIRequest】的更多相关文章

WSGIRequest对象 Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数.这个参数就是django视图函数的第一个参数,通常写成request.在这个对象上我们可以找到客户端上传上来的所有信息.这个对象的完整路径是django.core.handlers.wsgi.WSGIRequest. http请求的url详解: 在了解WSGIRequest对象的属性和方法之前,我们先了解一下url的…
玩转Django的POST请求 CSRF 不少麻油们玩django都会碰到这个问题,POST请求莫名其妙的返回 403 foribidden,希望这篇博文能解答所有问题 三种方法 To enable CSRF protection for your views, follow these steps: 1. Add the middleware`django.middleware.csrf.CsrfViewMiddleware` to your list ofmiddleware classes…
现在来新建一个Django项目server01,url配置为 url(r'^getData.html$',views.get_data) 其对应的视图函数为get_data: from django.shortcuts import render,HttpResponse def get_data(request): return HttpResponse("server----001") 以Django的默认端口启动这个项目,在浏览器中输入网址http://127.0.0.1:800…
两次被同一块石头绊倒简直不可原谅!第一次写django程序的时候,就因为ajax post请求折腾了整整一天,时隔两个多月昨天又被虐一整晚.叔可忍婶儿也不能忍了!!!重要的事情写下来,为以后轻松碾压post请求做准备. django post请求403: 当采用客户端象django的服务器提交post请求时.会得到403,权限异常.因为django针对提交的请教,有校验.所以会如此. 处理过程 按提示及百度结果修改setting.py,在MIDDLEWARE_CLASSES增加django.mi…
# -*- coding: utf-8 -*- import os import sys import tornado.ioloop import tornado.web import tornado.wsgi import tornado.httpserver from django.core.handlers.wsgi import WSGIHandler # 设置 Django 设置模块,sets the default settings module to use _HERE = os.…
Django运行方式 调试模式 直接 python manage.py runserver python manage.py runserver python manage.py runserver 0.0.0.0:80 web + uwsgi + django 请求顺序: the web client <-> the web server <-> the socket <-> uwsgi <-> Django 下面具体说明如何实现: 参考:http://u…
视图的第一个参数必须是HttpRequest对象 在视图函数中,接收的request有如下属性: path:一个字符串,表示请求的页面的完整路径,不包含域名. method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'.'POST'. 在浏览器中给出地址发出请求采用get方式,如超链接. 在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求. encoding:一个字符串,表示提交的数据的编码方式. 如果为None则表示使用浏览器的默认设置…
一.请求对象 REST 框架引入Request来扩展常规的HttpRequest,并提供了更灵活的请求解析.Request对象的核心功能是request.data属性. 导入方式: from rest_framework.response import Request request.POST # Only handles form data. Only works for 'POST' method. request.data # Handles arbitrary data. Works f…
同源策略 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 示例:两个Django demo demo1 url.py url(r'^demo1/',demo1), view.py def demo1(request): return HttpResponse("demo1") demo2 url.py url(r'demo2$',demo2), view.py def demo2(request): return render(request,'demo.…
一.说明 之前写了一篇“Python3+PyCharm+Django+Django REST framework开发教程”,想着直接介绍rest就完了.但回过头来看,一是rest在解耦的同时将框架复杂化了如果没有多终端那rest根本没有降低复杂度反而增加了复杂度,二是基础的get和post实现自己还是看半天.所以还是有必要再写一篇来介绍django常规的MVC开发. 环境搭建程项目创建都类似的的rest化部分之前(2.5及之前)进行操作即可,就不重复说明了.这里我创建的项目为django1,初始…
Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: 注释掉此段代码,即可. 缺点:导致Django项目完全无法防止csrf攻击 解决方法2: 在 views.py文件中 #导入,可以使此次请求忽略csrf校验 from django.views.decorators.csrf import csrf_exempt #在处理函数加此装饰器即可 @csrf_exempt def post(request): na…
跨域:通过js或python在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(Django)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 1,安装依赖包 pip install django-cors-headers 2,修改setting.py中配置 添加应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.cont…
一 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同. 比如:我在本地上的域名是127.0.0.1:8000,请求另外一个域名:127.0.0.1:8001一段数据 浏览器上就会报错,这个就是同源策略的保护,如果浏览器对javas…
当get网址是127.0.0.1:8000/mysite10这种类型的网址时 有两种方法: 1,在urls的路由的urlpatterns里面这样定义路由 re_path('^mysite(\d+)$',mysite), views里面的mysite函数取值是这样的: def mysite(request,id): 2, 在urls的路由的urlpatterns里面这样定义路由 re_path(mysite(?P<a>\d+)$',mysite), views里面的mysite函数取值是这样的:…
1.什么是HttpRequest HttpRequest,就是对请求对象的封装,里面封装的是请求过程中的所有信息.在Django中HttpRequest被封装成request对象并封装到视图处理函数中,在调用视图时自动传入 2.HttpRequest中的主要内容 可以使用print(dir(request))查看里面所有的属性及方法. 1.request.scheme : 请求协议 2.request.body : 请求主体 3.request.path : 请求路径 4.request.get…
用户请求到django,首先经过wsgi,中间件,然后到url路由系统,执行视图类中继承APIView执行as_view方法,在源码中可以看到VPIView继承了django的View类,通过super执行View中的as_view方法详细看文章,最终返回执行self.dispatch(),按照django类中查找顺序现从自己的方法中找,如果自己没有dispatch方法再从继承的父类中找,从APIView中找dispatch方法,在dispatch中首先将request执行self.initia…
django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案(通常为http或https) HttpRequest.body 字节字符串,表示原始http请求正文 HttpRequest.path 字符串,表示请求的页面的完整路径,不包含域名 HttpRequest.get_host() 获取主机地址 HttpRequest.path_info 在某些Web…
所有的form都需要在后台验证,前台验证是不可靠的,django的验证是后台验证,前台提示错误信息. js验证是在前台的,无需发送消息给后台,但安全性不可靠,强调的是用户体验. 要求,使用弹出框,弹出框form也使用django的验证. 制作一个form验证的mixin,需要验证的ajax请求继承该mixin class ValidMixin(object): def form_invalid(self, form): msg = { "success": "invalid&…
一.请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方式提交数据,ajax默认也是这个.请求类似于下面这样(无关的请求头在本文中都省略掉了): POST http://w…
Ajax请求设置csrf_token 官方文档 csrf_token: https://docs.djangoproject.com/en/1.11/ref/csrf/ CSRF 跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品).由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行.这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却…
Django中间件 在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. Django1.9版本以后中间件的执行流程 1.执行完所有的request方法 到达视图函数. 2.执行中间件的其他方法 3.经过所有response方法 返回客户端. 注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间件的response方法,返回给用户 然后 报错..不会再执行下一个中间件. ​ Djang…
Web框架 ​ Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法.web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了.浏览器和服务器的是基于HTTP协议进行通信的.也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率. wsgire模块 ​ 最简单的Web应…
一.什么是Ajax技术? 异步的JavaScript和XML.使用Javascript语言与服务器进行异步交互,传输的数据为XML(更多的使用json数据).Ajax不是一门新的编程语言,而是一种使用现有标准的一套方法. XMLHttpRequest 对象 (异步的与服务器交换数据) JavaScript/DOM (信息显示/交互) CSS (给数据定义样式) XML (作为转换数据的格式) 优点: 在不重新加载真个页面的情况下,可以与服务器交换数据并且更新部分网页内容.(这个特点让用户在不知不…
---恢复内容开始--- 一.choices字段  1.实列  前端代码 <div class='container'> <div class="row"> <h3>用户详情表</h3> <div class="col-md-8 col-md-offset-2"> <table class="table table-striped table-bordered table-hover&quo…
def simple_middleware(get_response): # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次. print('1----django启动了') def middleware(request): # 此处编写的代码会在每个请求处理视图前被调用. print('2----请求视图前被调用') if 'HTTP_X_FORWARDED_FOR' in request.META.keys(): ip = request.META['HTTP_X_FORWA…
场景: 用户注册的时候,输入用户名之后,Ajax发送请求到后端,后端验证该用户名是否已经被注册,然后返回到注册页面提示用户. 1.模型: from django.db import models class User(models.Model): name = models.CharField(max_length=20) password = models.CharField(max_length=20) 2.路由 from django.contrib import admin from d…
请求对象 一.客户端传参的几种方式 1. 通过URL路径(path)传递,例如:http://127.0.0.1:8000/news/1/2,两个参数:id和page 2. 通过 query string查询字符串 传递 i. 例如:http://127.0.0.1:8000/news?category=1&page=2 3. 通过 body请求体 传递,又可根据传递的数据格式,分为: i. 键值对:category=1&page=2 ii. 表单数据 iii. 非表单数据(json,xm…
使用Requests库操作自己的Django站点,post登陆admin页面返回403,serverlog显示csrf token not set. csrf token是get登陆页面时服务器放在cookies中返回的. 所以完整的登陆应该是这样的: import requests s = requests.Session() s.get("http://serveraddr/admin") s.post(actionaddr,data={登陆表单数据}) 之后s就是一个已登陆的Se…
这是Django版本的问题,1.9之前,中间件的key为MIDDLEWARE_CLASSES, 1.9之后,为MIDDLEWARE.所以在开发环境和其他环境的版本不一致时,要特别小心,会有坑. 将settings里的MIDDLEWARE_CLASSES默认配置顺序改成如下 MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.middleware.common.CommonMiddlewar…
一.jsonp方式 同源策略会阻止ajaxa请求,但不阻止src. jsonp方式其实是利用了<script>标签可以直接跨域的性质,在body中生成一个<script>标签,然后通过个这标签发送请求并拿到数据. <script> $.ajax({ url:"xxxxxxx", type:"GET", dataType:"jsonp", jsonp:"callbacks" #给跨域的返回数据…