博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue + Django API 前后端分离学习笔记 5.3-5.4 djangoseriallizer序列化model
阅读量:4127 次
发布时间:2019-05-25

本文共 2956 字,大约阅读时间需要 9 分钟。

5.1 5.2视频中的新内容大概说下

goods = Goods.objects.all()[:10]        json_list = []        from django.forms.models import model_to_dict        for good in goods:            json_dict = model_to_dict(good)            json_list.append(json_dict)

这个模块可以将model类转换成dict对象然后加到json中

但是很多类型的字段没办法序列化

 

from django.core import serializers        json_data = serializers.serialize('json', goods)        json_data = json.loads(json_data)

 

真正开始rest

安装django-guardian。

安装coreapi的过程中如果出现提示utf-8的问题就去这里改下

VueShop(虚拟环境的python目录)\lib\site-packages\pip\compat\__init__.py

在大概75行左右:

if sys.version_info >= (3, ):    def console_to_str(s):        try:            return s.decode(sys.__stdout__.encoding)        except UnicodeDecodeError:            return s.decode('utf_8')# 这里改成gbk

然后卸载coreapi 再重新装

其他要装的模块

Markdown, django-filter, django-crispy-forms, django-guardian, pygments 

然后根据官方文档来操作

INSTALLED_APPS = (    ...    'rest_framework',)# urls.pyurlpatterns = [    ...    url(r'^api-auth/', include('rest_framework.urls'))]

然后去这个网站,有基本的Views的例子

# 这行不要from snippets.models import Snippetfrom snippets.serializers import SnippetSerializer# 这行不要from django.http import Http404from rest_framework.views import APIViewfrom rest_framework.response import Response# 这行不要from rest_framework import statusfrom  .models import Goodsclass SnippetList(APIView):    """    List all snippets, or create a new snippet.    """    def get(self, request, format=None):        goods = Goods.objects.all()[:10]        serializer = SnippetSerializer(goods, many=True)        return Response(serializer.data)

然后在goodsapp下新建serializers.py

from rest_framework import serializersclass GoodSerializer(serializers.Serializer):    name = serializers.CharField(required=True, max_length=300)    click_num = serializers.IntegerField(default=0)

然后将views改成:

 

from .serializers import GoodSerializerfrom rest_framework.views import APIViewfrom rest_framework.response import Responsefrom  .models import Goods# Create your views here.class GoodsListView(APIView):    """    List all goods.    """    def get(self, request, format=None):        goods = Goods.objects.all()[:10]        # 因为goods是一个queryset列表对象 所以需要Many=True        goods_serializer = GoodSerializer(goods, many=True)        return Response(goods_serializer.data)

最后在urls.py中添加该类

from django.urls import path, re_path, includeimport xadminfrom django.views.static import servefrom MxShop.settings import MEDIA_ROOTfrom rest_framework.documentation import include_docs_urlsfrom goods.views import GoodsListViewurlpatterns = [    path('xadmin/', xadmin.site.urls),    re_path('media/(?P
.*)$', serve, {"document_root": MEDIA_ROOT}), path('goods/', GoodsListView.as_view(), name='goods-list'), path('docs/', include_docs_urls(title='慕学生鲜')), path('api-auth/', include('rest_framework.urls'))]

然后去页面检查 有惊喜

右上角的两个按钮可以分别选择看不同的东西

可以自己去试下

然后做个测试 

在GoodSerializer中加入goods_front_image字段看会显示啥

在图片路径的前面自动添加了/media/ 可以 这可以有

5.4视频完结 明天。。。明天带儿子 星期一继续 撒花

转载地址:http://hjepi.baihongyu.com/

你可能感兴趣的文章
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>