08.13自我总结 django中CBV 一.django处理业务逻辑的两种方式 FBV (function based views):使用函数来处理业务逻辑 CBV (class based views...):使用类来处理业务逻辑 二.CBV urls.py url(r'^login/', views.Login.as_view()), #类名.as_view() views.py: from django.views...会优先判断你的请求方法是GET还是POST, 如果是GET请求的话, 走GET函数, 反之, 走POSt函数 继承View类的时候会自动对传过来的参数进行判断 注意: form表单的方式, 只支持GET/POST ajax
Django 中处理CSRF csrf是针对与post请求的才会做验证 几种处理方式 csrf_token 用于form表单中,作用是跨站请求伪造保护。...csrf_token %} ··· Ajax提交,两种方式 # 方式一 $.ajax({ url:'', method:'post',... # 获取 var token=$.cookie('csrftoken') csrf放到请求头中 $.ajax...这里使用装饰器就可以解决~ 两个装饰器可用: csrf_protect: 需要验证 csrf_exempt:不需要验证 装饰器的使用方法按照FBV或者CBV装饰器的使用方法即可 导入:from django.views.decorators.csrf...装饰器示例,CBV装饰器有三种用法分别局部验证都可以使用 # 方式一,加在方法上验证,可以使用 '''局部验证,全局的csrf禁用''' from django.utils.decorators import
Django的请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情 而Django的生命周期内到底发生了什么呢?? 1....FBV模式和CBV模式 一个url对应一个视图函数,这个模式叫做FBV(Function Base Views) 除了FBV之处,Django中还有另外一种模式叫做CBV(Class Base views...()), ] 视图函数配置: from django.views import View class CBV(View): def get(self,request): return...对于from表单来说,提交数据只有get和post两种方法 另外的方法可以通过Ajax方法来提交 服务端根据个人请求信息的不同来操作数据库,可以使用原生的SQL语句,也可以使用Django的ORM语句....为返回给客户端的信息加一个响应头: 修改上面例子的视图函数为如下: from django.views import View class CBV(View): def dispatch(self
的class-based-view(以下简称cbv),首先要明白django引入cbv的目的是什么。...cbv的实现原理通过看django的源码就很容易明白,大体就是由url路由到这个cbv之后,通过cbv内部的dispatch方法进行分发,将get请求分发给cbv.get方法处理,将post请求分发给cbv.post...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH...a=1 print(request.is_ajax()) #判断是不是ajax发送的请求,True和False ''' Django一定最后会响应一个HttpResponse...#如果这样返回,两边都不需要进行json的序列化与反序列化,ajax接受的直接是一个对象 #views.py from django.http import JsonResponse return JsonResponse
Django REST框架构建Web API。...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...在浏览器发送的request数据包的header中,可以看到这些内容,例如: 一、CBV 视图里使用类处理请求,在url中一个路径对应一个类。...定义类需要继承 View url中需要添加 as_view() 类里面使用 from 表单提交,只有 get 和 post 方法 类里面使用 ajax 发送数据,支持 restful 规范 'get...'获取数据;'post'创建新数据;'put'更新;'patch'局部更新;'delete'删除; CBV 重新定义 dispatch 函数 所有方法都是通过 dispatch 这个函数反射执行,要想在
1,如果无需上传文件,还是推荐使用更为精简的编码格式1 我们除了可以采用form表单向django提交数据外,还可以采用ajax技术,ajax可以提交的数据格式有:1、编码 格式1 2、编码格式2...3、json,当ajax采用POST方法提交前两种格式的数据时,django的处理方案同上,但是当 ajax采用POST方法提交json格式的数据时,django会将接收到的数据存放于HttpRequest.body...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH...Django的视图层由两种形式构成:FBV基于函数的视图(Function base view)和CBV基于类的视图(Class base view) 1.4.1FBV 我们前面使用的视图函数就是FBV...1.5CBV源码 为什么CBV能够根据不同的请求方式自动执行不同的代码呢?
快速使用DRF写出接口 序列化和反序列化 drf快速使用 views.py serializer.py urls.py 在settings的app中注册 models.py postman测试 CBV源码流程分析...(View) 这里需要强调一下,CBV路由归根结底还是FBV都是函数的内存地址,比如views.类.as_view()底层仍然是函数的内存地址 CBV源码执行流程 '''views.py''' from...第二个参数是函数内存地址,CBV的底层也是FBV,as_view是类的绑定方法,自己的类中没有去父类(View)找,as_view()执行完,也是一个内存地址,内存地址是谁的?...'Method Not Allowed (%s): %s', request.method, request.path, extra={'status_code': 405...data中 ps:原来提交的数据在request.POST里,有局限性只能处理urlencoded和formdata编码格式,json格式不能处理,是没有request.data的,request其余使用方法的都一样
name"> 密码: 在AJAX...中应用 $(".btn").click(function () { $.ajax({ url: '', type...print(request.POST) return HttpResponse('ok') return render(request,'csrf_token.html') 在CBV...中使用: # CBV中使用 from django.views import View from django.views.decorators.csrf import csrf_exempt,csrf_protect...from django.utils.decorators import method_decorator # CBV的csrf装饰器,只能加载类上(指定方法为dispatch)和dispatch方法上
CBV版: ?...# CBV版添加班级 from django.views import View class AddClass(View): def get(self, request):...得到HttpResponse对象,返回django处理 fbv --- 基于函数的视图 cbv ----基于类的视图 加装饰器...# CBV版添加班级 from django.views import View from django.utils.decorators import method_decorator class...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH
在 Django 中,主要有两种类型的视图: FBV:基于函数的视图 CBV:基于类的视图 FBV(Function-Based Views)和CBV(Class-Based Views)是两种处理视图的方式...blogIndex(request): return HttpResponse(f'这里是博客模块的首页') 项目运行起来后,在浏览器访问 http://127.0.0.1:8000/blog/ CBV...:类视图 CBV(Class-Based Views)是基于类的视图方式。...在CBV中,每个视图通常是一个类方法,用于处理不同类型的 HTTP 请求。CBV提供了更多的灵活性和可扩展性,允许你在不同的方法中组织视图逻辑。...对于前端来说,通常就是用浏览器向服务器发起请求,用的是 Ajax ,现在流行使用 axios 这个库发起请求。
前后端集成使用AJAX请求在前端页面中与后端进行通信,处理用户认证的成功和失败情况。逐步教程1....({'success': False, 'error': '无效的凭据'}, status=401) else: return JsonResponse({'error': '方法不允许...'}, status=405)5....实现登录表单和前后端集成开发一个登录表单(templates/login.html),并使用AJAX请求在前端与后端进行集成,处理用户认证的成功和失败情况。Django设置以使用自定义认证后端。开发登录API视图,并使用AJAX请求在前端页面中集成用户认证功能。
CBV和FBV 我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的。...版: # CBV版添加班级 from django.views import View class AddClass(View): def get(self, request):...# CBV版添加班级 from django.views import View from django.utils.decorators import method_decorator class...如果你编写自己的 XMLHttpRequest 调用(在浏览器端),你必须手工设置这个值来让 is_ajax() 可以工作。 ...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH
加在CBV视图的get或post方法上 from django.utils.decorators import method_decorator class HomeView(View):...return redirect("/index/") 因为CBV中首先执行的就是dispatch方法,所以这么写相当于给get和post方法都加上了登录校验。 3....--Excel--> ajax/libs/pdfmake/0.1.53/pdfmake.min.js"> ajax/libs/pdfmake/0.1.53/vfs_fonts.js"> $(document).ready(function() { $('#example').DataTable( { "ajax
print=true" 2.HttoRequest.is_ajax() 如果请求是通过XMLHttpRequest发起的,则返回True.方法是检查HTTP_X_REQUESTED_WITH相应的首部是否是字符串...如果你编写自己的 XMLHttpRequest 调用(在浏览器端),你必须手工设置这个值来让 is_ajax() 可以工作。 ...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH...HttpResponse() render() redirect() HttpResquest()括号内直接跟一个具体的字符串作为相应体,比较直接很简单,所以这里主要介绍后面两种形式. 1.HttpRespnse() 使用方法...import JsonResponse return JsonResponse(data2,safe=False) 六.CBV和FBV CBV基于类的视图(Class base view)和FBV基于函数的视图
使用方法: module_path = 'notify.msg' md = importlib.import_module(module_path) #md就是notify文件夹下的msg文件 如果需要获取文件里面定义的函数或者类...请求,Djangocsrf中间件在两种post请求中的使用方式是不同的,具体使用方法如下: form表单 我们只需在form表单中添加{% csrf_token %}。...ajax有三种方式添加中间件标签。...@csrf_protect # 校验 def login(request): return HttpResponse('login') 在CBV上加csrf装饰器 csrf_exempt 只有一种加装饰器的方法...OK') # csrf_exempt这个装饰器只能给dispatch装才能生效 csrf_protect csrf_protect装饰器用普通加装饰器的方法就可以跟普通的装饰器装饰CBV
版 # CBV版添加班级 以类的方式实现 from django.views import View class AddClass(View): # 继承View中的所有属性 def get...不允许的情况 handler = 不允许的方法 3. handler(request, *args, **kwargs) 2....返回HttpResponse对象 给django 通过继承view方法,帮助完成逻辑业务中的功能(post,get,filter等八种接收方法),相较于FBV CBV版更加简洁,不用if判断,...如果你编写自己的 XMLHttpRequest 调用(在浏览器端),你必须手工设置这个值来让 is_ajax() 可以工作。 ...如果一个响应需要根据请求是否是通过AJAX 发起的,并且你正在使用某种形式的缓存例如Django 的 cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH
目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同操作对中间件执行顺序的影响...csrf 中间件 跨站请求伪造 post请求提交数据通过 csrf 校验 form 表单 ajax 发送 csrf 装饰器相关 未注释掉 csrf 中间件时 单功能取消 csrf 校验:csrf_exempt...发送 三种方式(第三种可以用在前后端分离时) 先在页面上写 {% csrf_token %},利用标签查找,获取到该 input 键值信息,放到 data 里 ajax data 值 那里直接写 {{...之后要用到的的地方 导入就行 这样就不需要 在 html 中写 {% csrf_token %} 或在 ajax...csrf_exempt # 全局开启时,局部禁用 @csrf_exempt def index(request): pass CBV 有两种方式,不能针对单个方法,是针对全局的 # CBV比较特殊
这种方式只限制在form表单中使用,ajax请求不支持。 3....在处理函数加此装饰器即可 @csrf_exempt def add_data(request): result = {} # TODO return HttpResponse(result) CBV...:用类实现路由处理 from django.views import View from django.views.decorators.csrf import csrf_exempt from django.utils.decorators...import View from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import...因为我们是使用Django模板渲染前端页面的,所以一般会先定义一个base.html,其他页面通过{% extends "base.html" %}来引入使用,那么在base.html中添加ajax的全局钩子
领取专属 10元无门槛券
手把手带您无忧上云