(生鲜项目)06. django的view实现商品列表页
使用原始的django的View来返回json格式的商品列表
目的是回顾一些django的基础知识, 好与后面的RESTful做对比
goods.views_base.py
from django.views.generic.base import View
# from django.views.generic import ListView from goods.models import Goods class GoodsListView(View):
def get(self, request):
"""
通过django的view实现商品列表页
:param request:
:return:
"""
json_list = []
goods = Goods.objects.all()[:10] # 方式一: 手动一个个赋值给dict
# import json
# from django.http import HttpResponse
# for good in goods:
# json_dict = {}
# json_dict["name"] = good.name
# json_dict["category"] = good.category.name
# json_dict["market_price"] = good.market_price
# # json_dict["add_time"] = good.add_time
# # 这里的add_time是datetime.datetime()对象,json并不支持对其序列化, 此外也不支持ImageField
# json_list.append(json_dict)
# return HttpResponse(json.dumps(json_list), content_type="application/json") # 方式二: 使用model_to_dict一次性返回对象的key和value字典, 同样,json不支持对image和datetime的序列化
# import json
# from django.http import HttpResponse
# from django.forms.models import model_to_dict
# for good in goods:
# good_dict=model_to_dict(good)
# json_list.append(good_dict)
# return HttpResponse(json.dumps(json_list), content_type="application/json") # 方式三: 使用django自带的serializers序列化工具
# serialize(format, queryset, **options) 可直接对多个对象进行操作,
import json
from django.core import serializers
from django.http import HttpResponse, JsonResponse
json_data = serializers.serialize("json",goods) # 此时的json_data就是一个json格式的列表,每一个元素都是一个对象封装成的一个dict,可见一行代码就达到了目的
json_data = json.loads(json_data)
return JsonResponse(json_data,safe=False) # safe默认为true,即默认只能序列化dict格式的,但现在我们需要序列化list格式的
以上使用django自带的3种方法实现了json字符串的返回, 但我们可以从返回的结果中看出一些问题, 见下图

所以, 因为直接返回json的种种不方便, 我们才需要使用RESTful,
----- over ----
(生鲜项目)06. django的view实现商品列表页的更多相关文章
- (生鲜项目)07. api view实现商品列表页
第一步: 环境配置 1. DRF官网: https://www.django-rest-framework.org/ 仔细查看自己当前的python版本以及django版本是否支持DRF, 然后就看看 ...
- 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...
- 6- vue django restful framework 打造生鲜超市 -完成商品列表页(下)
Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页下 drf中的request和response drf对于django的 ...
- (生鲜项目)08. ModelSerializer 实现商品列表页, 使用Mixin来实现返回, 以及更加方便的ListAPIView, 以及分页的设置
第一步: 学会使用ModelSerializer, 并且会使用ModelSerializer相互嵌套功能 1. goods.serializers.py from rest_framework imp ...
- react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置
现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...
- 【vue】饿了么项目-goods商品列表页开发
1.flex 属性是 flex-grow.flex-shrink 和 flex-basis 属性的简写属性. flex-grow 一个数字,规定项目将相对于其他灵活的项目进行扩展的量. flex-sh ...
- 夺命雷公狗ThinkPHP项目之----企业网站16之文章列表页的完善(关联查询)
我们栏目的所属栏目不能总是以数字来显示吧??这样的话,估计老板会让您直接卷铺盖滚蛋噢,嘻嘻... 所以我们需要对她进行关联查询,控制器代码如下所示: public function lists(){ ...
- 夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)
列表页这个其实是比较简单的一个,直接遍历除数据即可: public function lists(){ //$mod = M("Article")->select(); // ...
- 拼团商品列表页 分析 js代码行位置对执行的影响和window.onload的原理 setTimeout传参
w TypeError : Cannot set property 'innerHTML' of nullTypeError : Cannot set property 'value' of null ...
随机推荐
- Homestead can not mount nfs on macos catalina
It's not a vagrant issue but nfsd/macos issue.If you add to /etc/exports line:/Users/USERNAME/Docume ...
- Jquery tabs
官网 http://api.jqueryui.com/tabs/ 必须通过了后台验证tab1的信息后才允许进入tab2 var passed=false; $("#tabs ...
- P2543 [AHOI2004]奇怪的字符串
题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 复制 010 ...
- opencv 学习一安装环境vs2015+opencv3
参考博客 http://www.cnblogs.com/skyfsm/p/6840202.html 针对 模块计算机类型“X64”与目标计算机类型“X86”这个问题,我使用cmake 对环境的工程进行 ...
- ROS理解参数服务器param demo
param 是一个字典,存储一些变量 param_demo.cpp #include<ros/ros.h> int main(int argc, char **argv){ ros::in ...
- 在学习ROS过程中碰到的一些问题--1
好了,这是接触ROS的第三周了,初步了解了一下ROS,很多问题自己还是无法解决,但是想着很久没有在blog上记录自己的学习过程,就先胡乱写一下吧.^-^ 1.关于ROS各种基本概念的理解 这方面知识建 ...
- ajax请求数据动态填充之文档与字符串区别手法
success: function(data){ if(data.status==200){ var realName=data.doc.realName; $("#yishiul" ...
- 【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目
使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g ...
- ubuntu虚拟机安装及vim配置问题(转载)
virtual box虚拟机Ubuntu系统安装及共享文件夹建立 https://blog.csdn.net/qq_27905767/article/details/82106753 Linux超全v ...
- JavaWeb基础知识
一.WEB基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web ...