需求问题 在业务处理的工作中,在同一个视图处理上,可能会有普通的GET、POST请求,还会有ajax请求。 那么怎么在处理这些请求的时候做上区分呢?...视图函数: 同时存在GET,POST,Ajax处理 def test(request): if request.method == 'GET': ......这是一种前面文章Django 2.1.7 类视图中,在介绍类视图的时候说明了一个视图函数如何在同一个url情况下处理GET以及POST请求。 那么这里就是增加上了同时处理ajax的请求。...return JsonResponse({'resCode':'0'}) 其实如果没有那么多不同类型的请求,直接根据ajax的请求类型继续GET和POST处理即可。...类视图:同时存在GET,POST,Ajax处理 class TestView(View): def get(self,request): if self.request.is_ajax
这个view只实现了get方法,它只接受get请求。也符合它用于查看数据的需求。在代码中,我们只需要指定它对应的模板,对应的model就可以了。...在web开发中约定俗成的规则是,对于查询类的请求用get,对于修改类的请求用post。Django在设计的时候也遵循了这个原则,所以以下的每个view中,都具有支持get和post的函数。...CreateVIew: get——根据model提供一个空form post——接收从get发来的请求,数据合法性校验,插入数据库 UpdateView: get——根据model从数据库取出实例,并渲染...form post——接收从get来的请求,数据合法性校验,并更新数据库 CreateView 对应官网文档 view class SSHAuthCreateView(CreateView):...而在post请求发送过来的时候,Django会根据model里的field属性去做合法性校验(类型是否正确、字段是否必填等),在校验成功以后重定向至success_url。
本文链接:https://blog.csdn.net/bbwangj/article/details/98720627 Class-based views是Django为解决建站过程中的常见的呈现模式而建立的...执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....: get_context_data(**kwargs): (未填写属性和方法的使用同上) 5.UpdateView ?...显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单....可以直接用Django通用视图里的UpdateView和CreateView。
执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....get_context_data(**kwargs): (未填写属性和方法的使用同上) 5.UpdateView ?...显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单....django.views.generic.edit import CreateView, UpdateView, DeleteView from django.core.urlresolvers import...可以直接用Django通用视图里的UpdateView和CreateView。
使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...你甚至不需要为CreateView 和UpdateView提供success_url —— 如果存在它们将使用模型对象的get_absolute_url()。...首先我们需要添加get_absolute_url() 到我们的Author 类中: #models.py from django.core.urlresolvers import reverse from...DeleteView): model = Author success_url = reverse_lazy('author-list') 注 这里我们必须使用reverse_lazy() 而不是...AJAX 示例 下面是一个简单的实例,展示你可以如何实现一个表单,使它可以同时为AJAX 请求和‘普通的’表单POST 工作: from django.http import JsonResponse
CreateView): model = Article fields = ['title', 'body', 'pub_date'] blog/article_form.html post...:默认模板:article_form.html from django.views.generic.edit import UpdateView from .models import Article...django.views.generic.edit import UpdateView from .models import Article from .forms import ArticleUpdateForm...model = Article success_url = reverse_lazy('index') blog/article_confirm_delete.html post... 11、FormView:FormView一般用来展示某个表单,而不是某个模型对象。
通过这部分的开发,我们将会接触到更多django的用法。 感兴趣的伙伴可通过网站演示预览网站,登录后点击右上角头像即可弹出个人中心相关菜单。...个人资料 这里主要是对个人资料进行编辑,先显示用户原有的信息,然后用户即可对其进行修改并保存,对于编辑功能,django有自己的解决方案,即通过通用视图类UpdateView对模型进行更改。...我们这里继承了UpdateView来实现更新操作,和DetailView类似,我们这里也设置了model和template_name 还有form_class。...当更新成功后,django会回调get_success_url来将结果告诉模板,因此我们可以在get_success_url里面做一些定制的工作,我们可以传一些自己的参数。...它使用超级简单,只需要配置好key和rate即可,key代表业务,rate代表速率,这里我们设置key为ip,即限制ip地址,rate为'2/m',表示每分钟限制请求2次。
使用 Django 的模型,都是 django.db.models.Model 类的子类。 每个类将被转成数据库表。 每个字段由 django.db.models.Field 子类转成数据库的列。...from django.shortcuts import render, get_object_or_404, redirect, reverse from django.contrib.auth.decorators...import login_required from django.views.generic import UpdateView, ListView from django.utils import...topic, "form": form}) ③ 编辑帖子 @method_decorator(login_required, name='dispatch') class PostUpdateView(UpdateView...= 'post_pk' context_object_name = 'post' # 其他用户可以编辑所有帖子的问题 def get_queryset(self):
HTTP 规范定义了几种 request methods 请求方法,需要使用 GET 和 POST。...GET 用于从服务器请求数据,每当点击了一个链接或者直接在浏览器中输入一个网址时,就创建了一个 GET 请求。 POST 用于想更改服务器上的数据,每次发送数据给服务器都会导致资源状态变化。...Django 使用 CSRF Token 保护所有的 POST 请求,这是避免外部站点或者应用程序向服务器的应用程序提交数据的安全措施。...基于类的通用视图 from django.views.generic import UpdateView, ListView ① 主页 class BoardListView(ListView):...board = get_object_or_404(Board, pk=pk) # 涉及到内容填写,都可以采用 form 表单 if request.method == "POST
Django URL路由的示例 下面是一个简单的Django应用程序的示例,它使用URL路由来处理客户端请求。...在这个示例中,我们将这些视图函数定义在名为views.py的文件中:: from django.shortcuts import render, get_object_or_404, redirect...from django.views.generic.edit import CreateView, UpdateView from django.contrib.auth.decorators import...如果请求方法是GET,视图函数将渲染一个包含创建新文章表单的HTML模板。 第二个视图函数是post_detail,它显示单个博客文章的详细信息。...如果请求方法是GET,视图函数将渲染一个包含编辑现有文章表单的HTML模板。 最后一个视图函数是PostList,它显示所有博客文章的列表,并允许用户创建新的博客文章。
调用后, 视图将请求传递给dispatch() 方法,该方法将根据请求的类型(GET, POST, PUT, etc)执行响应的方法(详情参考django/views/generic/base.py,...如果方法为 GET 则执行 get() 方法, 如果为 POST 则执行 post() ; views.py Python from django.views import View class ContactView...(View): def get(self, request): # Code block for GET request def post(self, request)...': # Code block for POST request else: # Code block for GET request (will also match...#2 观点 「仅使用django.views.generic.View, 不用GV」 此观点认为, View 就足够了, 并且 View 是真正的CBV, 而通用视图则不是真正的 CBV.
3、通用视图 django.views.generic.ListView和django.views.generic.edit下的CreateView, UpdateView, DeleteView都是通用视图...当然GET请求时会生成空form到页面上。可以看到,除去定义model或者form类外,几行代码就可以搞定这么多事。...View是所有视图类的父类,根据方法名分发请求到具体的get或者post等方法,提供as_view方法。...ProcessFormView在GET请求上渲染表单,在POST请求上解析form到表单实例。...例如,我们希望录入合同,其中合同Model中还有地址Model和项目Model,而项目Model中又有地址Model,等等。 当然,我们有很多种实现的方案,但是,前面三部分说了那么多,不是浪费口水的。
Django在django.contrib.messages中提供了三个内置的存储类: class storage.session.SessionStorage 该类存储请求会话中的所有消息。...(): from django.contrib.messages import get_messages storage = get_messages(request) for message in...storage: do_something_with_the_message(message) 例如,可以获取所有消息,以JSONResponseMixin而不是TemplateResponseMixin...如果要创建可重用的应用程序,建议只使用内置的消息级别,而不依赖任何自定义级别。...更改每个请求的最低记录级别 可以通过set_level方法为每个请求设置最低记录级别: from django.contrib import messages # Change the messages
个人博客:mypython.me 视频上传 我们先来实现视频的上传,视频的上传采用的是分块上传的策略,并用了分块上传类库:django_chunked_upload,使用该类库,再配合前端上传js库(jquery.fileupload.js...w=1000&h=727&f=png&s=128275] 要填写的视频资料有视频标题、描述、分类、封面, 其中分类是通过get_context_data()带过来的, 填写后,点击**发布**,django...将通过UpdateView自动为你更新视频信息。...和post一同来实现的,get()负责展示界面,post()负责逻辑判断。...编辑对应的视图类是ClassificationEditView,它的实现超级简单,继承UpdateView即可。
Class-based views是Django为解决建站过程中的常见的呈现模式而建立的。...FormView 提交From 网站联系我们或emai订阅form CreateView 创建对象 创建新文章页 UpdateView 更新对象 修改文章页 DeleteView 删除对象 删除文章页...Mixin实现 view中如果觉得自带的post、get方法不够好,也可以重写post、get方法,这样就与函数式编程没有什么区别。...在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则: Django自身提供的View永远在最右边 mixin依次在以上view的左边 mixin..., View): def __init__(self, model): self.model = model def post_ajax(self, request, *
基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...TemplateView RedirectView Detail Views DetailView List Views ListView Editing views FormView CreateView UpdateView...传递给as_view() 的参数将赋值给服务请求的实例。利用前面的例子,这表示对MyView的每个请求都可以使用 self.size。...Django 的通用视图建立在基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。它们提炼视图开发中常见的风格和模式并将它们抽象,这样你可以快速编写常见的视图而不用重复你自己。...Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。
用法: from django.views.decorators.http import require_http_methods @require_http_methods(["GET", "POST..."]) def my_view(request): # I can assume now that only GET or POST requests make it this far...require_GET() 只允许视图接受GET方法的装饰器。 require_POST() 只允许视图接受POST方法的装饰器。...注 Django 会自动清除对HEAD 请求的响应中的内容而只保留头部,所以在你的视图中你处理HEAD 请求的方式可以完全与GET 请求一致。...因为某些软件,例如链接检查器,依赖于HEAD 请求,所以你可能应该使用require_safe 而不是require_GET。
这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。 Django使用请求和响应对象来通过系统传递状态。 ...('OK') Django的url是将一个请求分配给可调用的函数的,而不是一个class。...cbv的实现原理通过看django的源码就很容易明白,大体就是由url路由到这个cbv之后,通过cbv内部的dispatch方法进行分发,将get请求分发给cbv.get方法处理,将post请求分发给cbv.post...is_anonymous() 返回True 而不是False。 is_authenticated() 返回False 而不是True。...参数: request: 用于生成响应的请求对象。
Django请求和响应对象 Django 使用请求和响应对象在系统中传递状态。 当一个页面被请求时,Django 会创建一个 HttpRequest 对象,这个对象包含了请求的元数据。...127.0.0.1的本机信息,而不是真实客户端的信息。...在 request.POST 和 request.GET 中的 QueryDict 将在正常的请求/响应周期中被访问时是不可改变的。...传入迭代器 你可以传递 HttpResponse 一个迭代器而不是字符串。HttpResponse 将立即消耗迭代器,将其内容存储为一个字符串,然后丢弃它。...这种操作在普通场景下没什么问题,但是如果文件或者图片很多,并且很大,通常我们使用一个独立的静态文件服务器来解决问题,而不是由Django来处理这些东西 ** 告诉浏览器将响应作为文件附件处理 ** >>
在本文中,我们将探讨Django的get和post请求、优缺点、实用场景以及与Flask、FastAPI的对比。...Django的get和post请求 在Django中,可以使用视图来处理HTTP请求,并返回相应的HTTP响应。...视图函数可以使用get和post请求来接收和处理数据,这些数据可以是URL参数、请求体参数或查询字符串参数。...而Flask则是一个轻量级的Web框架,适合处理小型项目。 性能:Django在处理大量请求时可能会受到影响,而Flask则可以更快地处理请求。...类型提示和文档生成:FastAPI提供了类型提示和自动文档生成功能,使得API的编写变得简单方便,而Django则需要使用第三方库来实现这些功能。
领取专属 10元无门槛券
手把手带您无忧上云