每一个URL代表一种「资源」 具体要对资源做什么操作,要体现在请求方式上,而不是URL上 json格式数据 text文本 图片,视频等 客户端和服务器之间,传递这种资源的某种表现形式 通过请求头中的 Content-Type...比如:是否为json,传递的项目数据是否符合要求,有些必传参数是否携带 更新项目 将模型类转化为字典,然后返回 def put(self, request, pk): # 1.校验前端传递的pk...原始设计小结 创建接口的任务 校验用户数据 将请求的数据(如json格式)转换为模型类对象 反序列化 将其他格式(json,xml等)转换为程序中的数据类型 将json格式的字符串转换为Django中的模型类对象...操作数据库 将模型类对象转换为响应的数据(如json格式) 序列化 将程序中的数据类型转换为其他格式(json,xml等) 例如将Django中的模型类对象转换为json字符串 数据增删改查流程 增...保存数据 -> 将保存的数据序列号并返回 查 查询数据库 -> 将数据序列化并返回 原始设计代码 import json from django.http import JsonResponse from
显然,数据以json的形式返回前端。...但是从代码中可以看到: 通过在新建列表、其元素为单个商品信息组成的字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...2.serializer序列化model 使用Django自带的model_to_dict()方法可以实现直接将模型数据转化为字典形式,但是对于DateTimeField、ImageField等字段时还是无法序列化...Django中有Form,也有ModelForm,DRF中也有ModelSerializer,相比于Serializer,它省去了模型所有字段的添加和处理数据方法的实现,serializers.py简化如下...request.user通常会返回的实例django.contrib.auth.models.User,尽管其行为取决于所使用的身份验证策略。
(.parsers)自动设置为 Parser 实例列表。....user request.user 通常会返回 django.contrib.auth.models.User 的一个实例,但其行为取决于正在使用的身份验证策略。....method request.method 返回请求 HTTP 方法的大写字符串表示形式。如 GET,POST...。 透明地支持基于浏览器的 PUT,PATCH 和 DELETE 表单。...REST framework 通过提供一个 Response 类来支持 HTTP 内容协商,该类允许你根据客户端请求返回不同的表现形式(如: JSON ,HTML 等)。...由于 Response 类使用的渲染器不能处理复杂的数据类型(比如 Django 的模型实例),所以需要在创建 Response 对象之前将数据序列化为基本的数据类型。
QueryDict 在django的 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例,这是django自定义的一个类似字典的类...QueryDict.get(key, [default]) QueryDict.get(key, [default]) 返回 key 的值。如果key 具有多个值,只返回最后(最新)的值。...如果key 具有多个值,以列表形式返回 key 的所有值。当key 不存在时返回一个空列表,设置了默认值则返回默认值。 3. 查询字符串 在url中格式如 ?...django默认开启了csrf防护,会对上述的请求方式做验证,测试时可以关闭验证。...例如前端请求的是json数据: url demo/json 路由 url(r'^json', views.get_json, name="json") json数据 {"name": "xuanli",
static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT) include 指的就是包含该app下的url 对于大部分的view视图一般写成类的形式...(errno=Code.PARAMERR, errmsg=err_msg_str) 如当我登录的时候就会访问登录的界面发送get请求,提交数据在数据库就是post请求 put put请求容易给人忽视,...json的键值对,而不是列表 request.body就是form表单的数据 Queryset Django ORM用到三个类:Manager、QuerySet、Model。...QuerySet实例 就是从数据库根据自己要求拿数据的 连数据都那不出来,写啥视图 所以在编写queryset必须用django shell 调试 在model中,Django通过给Model增加一个objects...values() 返回包含对象具体值的字典的QuerySet values_list() 与values()类似,只是返回的是元组而不是字典。
RESTful风格的API即为RESTful API。通过GET/ POST/ PUT/ DELETE来获取/新建/更新/删除资源。一般使用JSON格式返回数据。...两者都是数据转换格式,比如我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...'rest_framework', ] 在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求的数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作...,完成客户端请求的增删查改 将模型类对象转换为响应的数据(如JSON格式) 接下来以学生管理为例介绍下使用drf写代码的过程: 创建子应用: python manage.py startapp students...router.register("stu", StudentAPIView) # 向路由器中注册视图集 urlpatterns += router.urls # 将路由器列表追加写入django的路由列表中
Django 提供F表达式 来允许这样的比较。 F() 返回的实例用作查询内部对模型字段的引用。 这些引用可以用于查询的filter 中来比较相同模型实例上不同字段之间值的比较。...ForeignKey,那么该ForeignKey所指的模型实例可以通过一个Manager返回第一个模型的所有实例。...in_bulk() in_bulk(id_list=None) 获取主键值的列表,并返回将每个主键值映射到具有给定ID的对象的实例的字典。 如果未提供列表,则会返回查询集中的所有对象。...Form.errors.as_json(escape_html=False) 返回JSON 序列化后的错误。...ModelAdmin和InlineModelAdmin具有media属性,可返回存储到JavaScript文件的路径的Media对象列表形式和/或格式。
1.Restful API接口实现 1.1需求实现思路 1、获取指定的图书信息: 1)根据pk获取指定的图书对象(pk由查询字符串的形式传给后端) 2)将图书的json数据返回,状态码:200 2、修改指定的图书信息...: 1)根据pk获取指定的图书对象 2)获取参数(btitle,bpub_date)并进行校验 3)修改指定的图书的数据并更新到数据表 4)返回修改图书的json数据,状态码:200 3、删除指定的图书信息...2.明确RestAPI接口实现时的主要工作 2.1序列化&反序列化 把程序中的数据结构类型转换为其他格式的数据,这个过程叫做序列化的过程 例:将模型类对象转换为字典或者json数据的过程,就叫做序列化的过程...2.2RestAPI接口核心的工作: 把数据库数据序列化为前端所需要的格式,并返回。 把前端发送的数据反序列化为模型类对象,并保存到数据库中。...django的路由列表中 4.Serializer序列化器 作用:进行数据的序列化和反序列化 序列化:把对象转换为字典 反序列化:数据校验;数据保存(可以利用这一点实现新增和更新); 4.1使用 定义一个序列化器类
作者:Kuky_xs 博客:https://www.jianshu.com/u/9fcd71535294 0 码仔有话说 《django入门:环境及项目搭建》 《django入门:数据模型》 《django...,然后可以转换成为某种表现形式,例如 json 等,其定义的方式和 Form 类似,官方的原话如下 The first thing we need to get started on our Web API...,通常用于 POST 提交的数据信息 serializer.save() # 除了序列化模型实例,也可以将 queryset 进行序列化,此时需要在 serializer 中加入 many=True...) 3 创建 rest 的 view 函数 rest_framework 类似 django,需要通过 view 来展示接口返回的数据信息,在 views.py 中创建视图函数 from django.views.decorators.csrf...post 实例 post = get_object_or_404(Post, pk=pk) # 首先判断是否存在这个 post,不存在直接返回 404 NOT FOUND # 如果
’, views.say, name=‘say’), ] reverse反解析 使用reverse函数,可以根据路由名称,返回具体的路径,如: from django.urls import reverse...,值以列表返回,可以获取指定键的所有值 如果键不存在则返回空列表[],可以设置默认值进行后续处理 dict.getlist(‘键’,默认值) 3)查询字符串 通过request.GET属性获取,返回...非表单类型 通过request.body属性获取最原始的请求体数据,自己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。...length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。...子类TabularInline:表格的形式嵌入 子类StackedInline:块的形式嵌入 3、调整站点信息 admin.site.site_header 设置网站页头 admin.site.site_title
:模型层、模板层、视图层 Django自称是MTV框架,其实本质还是MCV MCV(models views controllar) models views controllar:模型层、视图层、控制层...JSON.stringify({"name":"Tonny"}) 经过json序列化的数据以字符串的数据类型存储的,这点是必须要清楚的,如 b = json.dumps({'password': 123...序列化 序列化的目的就是将数据整合成一个大的字典的形式方便数据交互。...Django内置的serializers模块 前端想拿到通过orm查到的一个个对象,(数据库里的一条条记录),后端想把直接实例化出来的对象发送给前端,这时候就需要用到Django给我们提供的序列法方式(...其实就是列表套字典的形式将数据发送出去)。
TestFiled DateFiled AutoFiled(primary_key=True)自增,不指定主键会自动创建 在使用的时候何以设置DateField.auto_now每次自动保存对象的时候自动设置改字段为当前时间... 模型类上的管理器(class.objects) queryset (惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句 query 获取mysql 语句 first()...) 根据给定的条件获取过滤后的queryset,多个条件用','连接 exclude(**kwargs) 作用和filter相反,去除不符合条件的对象 多条件的or连接 from django.db.models...import Q Q(age=1) | Q(age=0) 返回某个字段 values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’ only(*fields...) 与values差不多,返回queryset,‘对象列表’,必须带上主键 defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除 排序 order_by
,字符串类型 charset:表示response采用的编码字符集,字符串类型 status_code:响应的HTTP响应状态码 content-type:指定输出的MIME类型 方法 init :使用页内容实例化...json数据,一般用于异步请求 _init _(data) 帮助用户创建JSON编码的响应 参数data是字典对象 JsonResponse的默认Content-Type为application/json..._404(klass, args, *kwargs) 通过模型管理器或查询集调用get()方法,如果没找到对象,不引发模型的DoesNotExist异常,而是引发Http404异常 klass:获取对象的模型类...改为False 将请求地址输入2和100查看效果 得到列表或返回404 get_list_or_404(klass, args, *kwargs) klass:获取列表的一个Model、Manager或...QuerySet实例 **kwargs:查寻的参数,格式应该可以被get()和filter()接受 from django.shortcuts import * def index(request):
AJAX提供了一种将GET或POST请求发送到Django视图并接收任何返回的数据而无需刷新页面的方法。...发出请求后,视图返回请求的数据,然后需要将响应转换为JSON,然后才能将其用于其他操作。...我们希望数据以JSON形式从视图返回,因此我们将Accept参数设置为application/json。在视图中,我们可能要确保该请求是AJAX请求。...访问该视图,则这些附加参数也将与请求一起包含在功能参数列表中。...一旦获得了请求中的数据,我们就可以执行用户希望启动AJAX请求的操作。这可能是创建模型的新实例或更新现有实例。 与GET请求一样,可以使用JsonResponse和带有数据的字典将数据发送回页面。
如果用户当前没有登录,user 将设置为 django.contrib.auth.models.AnonymousUser 的一个实例。...request常用方法 1.HttpRequest.get_full_path() 返回完成参数列表的path,如果可以将加上查询字符串,例如:"/music/bands/the_beatles...,所以这里主要介绍后面两种形式. 1.HttpRespnse() 使用方法: 最简单的方式是传递一个字符串作为页面的内容到HttpResponse构造函数,并返回给用户,如: response...五.JsonResponse 向前端返回一个json格式字符串的两种方式 #第一种方式 import json data1 = {"name":"Yven","age":18} data2 = ["Yven...","abc"] return HttpResponse(json.dumps(data1)) return HttpResponse(json.dumps(data2)) #报错,默认不支持列表类型也就是数组类型
(对应Flask中的flask-script) 数据库ORM支持(对应Flask中的FlaskSQLAlchemy) 2、MVT模式(Model模型、View视图、Template模板) Model模型...退出虚拟环境 pip install 安装依赖包 pip uninstall 卸载依赖包 pip list 已列表形式查看已安装的依赖包 pip freeze 查看已安装的环境的依赖包(没有上面的展示效果好看...程序创建 1、在定义视图函数的时候,必须接收request(作为形参接收请求对象) Flask框架中的视图函数可以直接返回字符串,但是Django视图返回的必须是响应对象 2、返回响应对象HttpResponse...4、路由说明 4.1 Django框架匹配的过程(十分重要) 我们访问地址,拿到地址/index之后,Django会先去总的urls中urlpatterns列表中从上到下开始匹配,匹配的时候将最前面的'...json.dumps(dict)将python字典转换为json字符串 json.loads(json字符串)将json字符串转换为python字典 非表单类型的请求体数据,Django无法自动解析,
在RESTful API中,接口返回的是JSON,JSON的内容对应的是数据库中的数据,DRF是通过序列化(Serialization)的技术,把数据模型转换为JSON的,反之,叫做反序列化(deserialization...2个数据模型的实例,所以这里只显示第2条数据。...,模型实例→Python字典→JSON。...()方法代码是return Snippet.objects.create(**validated_data),所以serializer.save()会在数据库中新增1条数据,并返回Snippet模型实例...序列化的过程,就是模型实例→Python字典→JSON的过程。通过本文也理解了在app中models.py→serializers.py→views.py→urls.py的代码编写顺序。
将关联对象序列化为关联对象的字符串表示方式,(即关联对象模型类_str_方法的返回值) subs = serializers.StringRelatedField(label='下级地区') 说明 我们在昨天的文章...5.3序列化&反序列化 下面从我们最近推文的项目来简单的理解两个概念。 序列化:将模型对象转换为字典或者json数据的过程。 反序列化:将前端传递的数据保存到模型对象中的过程。...class 序列化器类名(serializers.Serializer): # 字段名 = serializer.字段类型(选项参数) 如果我们想要使用序列化器对应的是Django的模型类,那么可以继承自...()来进行数据的校验,我们还可以补充额外的验证: a.先写一个函数(如about_django)封装补充验证的功能,然后在字段中添加 validators参数,如下: btitle = serializers.CharField...Response类的对象:传入原始的响应数据,会自动根据客户的请求头中 Accept将响应数据转换为对应的格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常
在本教程中,我们将探讨如何使Django与Chart.js对话以及如何基于从我们的模型中提取的数据来呈现一些简单的图表。 ?...5个城市,并将其以饼图形式呈现。...在这种策略中, 我们将返回图表数据作为视图上下文的一部分,并使用Django模板语言将结果注入JavaScript 代码中。...示例2:使用Ajax的条形图 如标题所示,我们现在将使用异步调用来绘制条形图。...该home视图将是加载图表的主页。另一个视图population_chart将是唯一负责提供数据的视图,返回带有标签和数据的JSON格式响应数据。
官网详情:URL dispatcher 模型 (Model) 模型包含存储的数据的基本字段和行为,通常,一个模型对应一个数据库表。 1.创建Model 在创建模型之前,先要想好数据库的表结构。...添加数据 当创建了数据模型之后,Django会自动给到一个数据库抽象的API,用于进行数据的增删改查。一个模型类表示一个数据库表,一个模型类实例代表一个数据库表中的记录。...(1) 可以通过实例化一个模型类,然后调用 save() 将数据保存到数据库中: >>> from todo.models import Todo >>> todo = Todo(content='第一件事就是写文...数据模型 视图 (View) 视图是一个Python函数,它接收一个Web请求,然后返回一个Web响应。...简单地使用generic.ListView实现列表接口(和使用django.views.View实现的区别不大): from django.core import serializers from django.views