首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用django写接口(入门篇)

请求则保存数据 elif request.method == "POST": # 将 request 中的参数取出来进行序列化 data = JSONParser...modified_time', 'excerpt'] # exclude 为不展示的字段名,和 fields 不能同时设置 # exclude = ['id', 'author...post,不存在直接返回 404 NOT FOUND # 如果 settings.py 下的 DEBUG 属性设置为 True 的话,django 会不展示 404 页面,设置成 False 即可...获取详情 通过上面的两个例子,我们发现 tags 字段返回的信息只有 id,但是很多时候我们需要具体的信息,如果只返回一个 id 的话就是说我们还要用 tag 的 id 再去做请求获取具体的 tag 信息...,太麻烦了,我们对 model 中存在的 ForeignKey 和 MaynToMany 链表结构字段做些必要的调整,使其能够返回全部信息。

3.2K30

用django写接口(优化篇)

DRF 中的 Request 和 Response。...Request 继承 HttpRequest,里面有个 request.data 属性,可以处理任意数据,例如 'POST','PUT','PATCH',其用法类似表单中的 request.POST (...Request 和 Response 我们将分别通过 @api_view,APIView 和通用视图类对 view 进行一些改造 api_view 注解重构 # ....import 省略 # 将该视图的请求方法写在注解中...在结束文章的最后,记录自己写的时候遇到的一个坑,当更新 ManyToMany 字段的时候,我们需要重新写 post 方法,直接传 id 是不能更新的,直接传 id 是不能更新的,直接传 id 是不能更新的...# 假设我们的 post 有一个 ManyToMany 字段 tags class PostDetailView(APIView): # 更新的时候,需要约定好 ManyToMany

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django

    ,请求之间无关系 # cookie 保存在浏览器上的键值对,访问时会自动添加 # 例如:登录,输入密码登陆后,若成功,响应请求,让浏览器保存cookie本机,下次访问会默认带上cookie #...装饰器中第一个参数是request,不匹配 # 解决方案:form django.utils.decorators import method_decorator # get或post方法上 @...即时sttting中注释了,不验证跨站请求,加了本装饰器,也会验证 @method_decorator(csfr_exempt) 即时sttting中验证跨站请求,加了本装饰器,也不会验证,即取消跨站验证...在全局 # 操作Django请求和响应的模块!...属性 --> 字段 # # Django连接MySQL数据库的步骤: # 1. # 手动创建库 # 2. # 配置settings.py中数据库的连接信息 # 3. # 修改settings.py同目录下的

    3.5K20

    django 1.8 官方文档翻译: 5-1-1 使用表单

    除非你计划构建的网站和应用只是发布内容而不接受访问者的输入,否则你将需要理解并使用表单。 Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入。...Django 会处理表单工作中的三个显著不同的部分: 准备并重新构造数据 为数据创建HTML 表单 接收并处理客户端提交的表单和数据 可以手工编写代码来实现,但是Django 可以帮你完成所有这些工作。...我们可能想使用非常复杂的字段,以允许用户做类似从日历中挑选日期这样的事情,等等。 这个时候,让Django 来为我们完成大部分工作是很容易的。...这是我们在第一个访问该URL 时预期发生的情况。 如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。...表单和跨站请求伪造的防护 Django 原生支持一个简单易用的跨站请求伪造的防护。当提交一个启用CSRF 防护的POST 表单时,你必须使用上面例子中的csrf_token 模板标签。

    4.3K20

    Django学习笔记之Queryset详解

    注意:这里只是查询Entry表,返回的a的每条记录只包含Entry表的字段值,不管Entry的model中是否有onetoone、onetomany、manytomany字段,都不会关联查询。...不过update()中的键值对的键只能是主表中的字段,不能是关联表字段,如下 Entry.objects.update(blog__name='foo') #错误,无法修改关联表字段,只能修改Entry...聚合函数可以像filter那样关联表,即在聚合函数中,Django对OneToOne、OneToMany、ManyToMany关联查询及其反向关联提供了相同的方式,见下面例子。...数量,字段命名为ut_num,返回的QuerySet中的每个object都有 #这个字段。...,它们的每个元素包含若干主表和关联表的字段,不包含任何实体和关联实例,这种情况要用values()和values_list();第四种:返回model instance;第五种:单个值,如aggregate

    2.7K30

    django 博客使用 annotate 统计分类下文章数量

    那么 annotate 的工作原理究竟是怎么样的呢?...在 Post 模型中我们通过 ForeignKey 把 Post 和 Category 关联了起来,这时候它们的数据库表结构就像下面这样: Post 表: id title body category_id...当 django 要查询某篇 post 对应的分类时,比如 post 1,首先查询到它分类的 id 为 1,然后 django 再去 Category 表找到 id 为 1 的那一行,这一行就是 post...category 1 在 Category 表中对应的 id 是 1,django 就在 Post 表中搜索哪些行的 category_id 为 1,发现前 3 行都是,把这些行取出来就是 category...此外,annotate 方法不局限于用于本文提到的统计分类下的文章数,你也可以举一反三,只要是两个 model 类通过 ForeignKey 或者 ManyToMany 关联起来,那么就可以使用 annotate

    2.2K70

    关于“Python”的核心知识点整理大全55

    模板 这个模板需要显示主题的名称和条目的内容;如果当前主题不包含任何条目,我们还需向用 户指出这一点: topic.html {% extends 'learning_logs/base.html...如果请求方法不是POST,请求就可能是GET, 因此我们需要返回一个空表单(即便请求是其他类型的,返回一个空表单也不会有任何问题)。...由于实例化TopicForm时我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交的表单数据进行处理。...函数is_valid() 核实用户填写了所有必不可少的字段(表单字段默认都是必不可少的),且输入的数据与要求的 字段类型一致(例如,字段text少于200个字符,这是我们在第18章中的models.py...这 种自动验证避免了我们去做大量的工作。如果所有字段都有效,我们就可调用save()(见), 将表单中的数据写入数据库。保存数据后,就可离开这个页面了。

    16610

    37.Django1.11.6文档

    如果使用POST请求提交表单,该视图将再次创建一个表单实例,并使用请求中的数据填充表单:形式 = NameForm(request.POST)这被称为“将数据绑定到表单”(现在是绑定的形式)。...如果renderer是None,则使用FORM_RENDERER设置中的渲染器。 在Django更改1.11: 添加了renderer参数。 支持不接受的子类将在Django 2.1中被删除。...记住 prefix 在POST请求和非POST 请求中均需设置,以便他能渲染和执行正确 (11)表单和字段验证 表单验证发生在数据验证之后。 ...这个方法不返回任何东西且不应该改变任何值。 当你遇到不可以或不想放在validator 中的验证逻辑时,应该覆盖它来处理验证。...Paginator.page()放回在所请求的页面无效(比如不是一个整数)时,或者不包含任何对象时抛出异常。

    24.4K80

    Django教程(二)- Django视图与网址进阶1. HTML表单2.CSRF3.代码操作

    在返回的 HTTP 响应的 cookie 里,django 会为你添加一个 csrftoken 字段,其值为一个自动生成的 token 在所有的 POST 表单时,必须包含一个 csrfmiddlewaretoken...字段 (只需要在模板里加一个 tag, django 就会自动帮你生成,见下面) 在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提交的表单里的...在所有 ajax POST 请求里,添加一个 X-CSRFTOKEN header,其值为 cookie 里的 csrftoken 的值 Django 里如何使用 CSRF 防护: 首先,最基本的原则是...也就是说任何处理 GET 请求的代码对资源的访问都一定要是“只读“的。...修改项目中的urls.py 把新定义的app加到settings.py中的INSTALL_APPS中 测试: ? 输入正确的用户名和密码: ? 反之: ?

    4.3K40

    PythonWeb框架之Django

    它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括 HTML,Rss源,JSON,XML等)的内容。你正在阅读的网站就是基于Django。...在传统的数据驱动网站中,Web应用程序会等待来自Web浏览器(或其他客户端)的HTTP请求,当接收到请求时,应用程序根据URL和可能的Post数据或GET数据中的信息确定需要的内容,根据需要,可以从数据库读取或写入信息...其他的任何情况下,模版继承都将无法工作,模板渲染的时候django都不知道你在干啥。 在base模版中设置越多的 {% block %} 标签越好。...ORM参数 (1)null 如果为True,Django 将用NULL 来在数据库中存储空值。 默认值是 False. (1)blank 如果为True,该字段允许不填。...如果你没有指定任何一个字段的primary_key=True, Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为, 否则没必要设置任何一个字段的primary_key

    2.6K50

    统计各个分类下的文章数

    数据库数据聚合 annotate 方法在底层调用了数据库的数据聚合函数,下面使用一个实际的数据库表来帮助我们理解 annotate 方法的工作原理。...当 Django 要查询某篇 post 对应的分类时,比如 post 1,首先查询到它分类的 id 为 1,然后 Django 再去 Category 表找到 id 为 1 的那一行,这一行就是 post...category 1 在 Category 表中对应的 id 是 1,Django 就在 Post 表中搜索哪些行的 category_id 为 1,发现前 3 行都是,把这些行取出来就是 category...因为 num_posts 的值小于 1 表示该分类下没有文章,没有文章的分类我们不希望它在页面中显示。关于 filter 函数以及查询表达式(双下划线)在之前已经讲过,具体请参考 分类与归档。...将 Annotate 用于其它关联关系 此外,annotate 方法不局限于用于本文提到的统计分类下的文章数,你也可以举一反三,只要是两个 model 类通过 ForeignKey 或者 ManyToMany

    99140

    Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器

    目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET、POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Ajax...自定义分页器 批量插入测试数据 bulk_create 分页 使用最终版的实现分页器 models 字段补充 choices 参数/字段(用的很多) 用户性别、用户学历、工作状态、婚否(可限范围内可以罗列出来的...发送 GET、POST 请求的几种常见方式 a 标签的 href 属性 GET请求 直接在浏览器窗口输入 url 敲回车 GET请求 form 表单提交...(这一特点给用户的感觉是在不知不觉中完成请求和相应过程) 用 Ajax 做一个小案例 页面上有三个 input 框,在前两个 input 框中输入数字,点击按钮发送 ajax 请求,在不刷新页面的情况下...,在第三个框中自动填写两数之和 咱们这里是 jQuery 的 ajax,别忘了先引入 jQuery 准备工作 新建一个项目,完成基本配置 因为要用到 post 请求,所以先暂时把 settings

    6.3K31

    Django 2.1.7 查询数据返回json格式

    需求问题 在日常工作中,对于前端发送过来的请求,后端django大部分都是采用json格式返回,也有采用模板返回视图的方式。...在模板返回视图的方式的确很方便,但是如果涉及到动静分离、ajax请求这类,django就只能返回json格式的数据了。...那么这里就带来了一个问题,如何将django从数据库模型类中查询的数据以json格式放回前端。 然后前端如果获取读取返回过来的数据呢?...,只是获取输入框的内容,然后点击提交按钮发送一个ajax的post请求即可。...这样子返回前端的话,每条数据对象包含 fields,model,pk三个对象,分别代表字段、模型、主键,我更想要一个只包含所有字段的字典对象。

    3K20

    django框架菜鸟教程_django框架菜鸟教程

    DEBUG 调试模式,创建工程后初始值为True,即默认工作在调试模式下。 作用: 修改代码文件,程序自动重启 Django程序出现异常时,向前端显示详细的错误追踪信息....路由解析顺序 Django在接收到一个请求时,从主路由文件中的urlpatterns列表中以由上至下的顺序查找对应路由规则,如果发现规则为include包含,则再进入被包含的urls中的urlpatterns...,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。...user:请求的用户对象。 path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。 encoding:一个字符串,表示提交的数据的编码方式。...中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。

    3.1K40

    Django学习之旅(五)

    想到了解更多的字段,可以去看下Django源码中django.forms.fields这个文件。 然后label这个有什么用呢?我想卖个关子,等会你就知道了。...这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签。 4)在 urls.py 中对应写上这个函数 ?...居然有输入框。我们在 forms.html 中并没有添加相对应标签和输入框啊。这就是Django强大之处,它会根据forms字段来渲染出相对应的控件的。 ?...如果你没有填写任何信息,Django页面内部帮你做简单判空处理。 ? 正常输入内容 ? 返回的结果如下: ? 2 文件上传 如果你把表单学会了,可以往下学习。...注意request.FILES 只有在请求方法为POST,并且发送请求的 拥有enctype="multipart/form-data" 属性时,才会包含数据。否则request.FILES 为空。

    67810

    浅谈Python Django框架

    2) views.py:处理用户发出的请求,与urls.py对应, 通过渲染templates中的网页可以将显示内容,如登陆后的用户名,用户请求的数据等输出到网页。...4) forms.py:表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。...(max_length=20)   类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField...② 新建 search2.py 文件并使用 search_post 函数来处理 POST 请求: [python] view plain copy from django.shortcuts import...render   from django.views.decorators import csrf   # 接收POST请求数据   def search_post(request):      ctx

    2.2K20

    浅谈Python Django框架

    2) views.py:处理用户发出的请求,与urls.py对应, 通过渲染templates中的网页可以将显示内容,如登陆后的用户名,用户请求的数据等输出到网页。...4) forms.py:表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。...(max_length=20) 类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField...② 新建 search2.py 文件并使用 search_post 函数来处理 POST 请求: [python] view plain copy from django.shortcuts import...render from django.views.decorators import csrf # 接收POST请求数据 def search_post(request): ctx

    2.5K20
    领券