Vue全栈开发旅游网项目(6)-接口开发

1.景点详情接口开发

1.设计响应数据结构

文件地址:sight/serializers.py

创建类:

class SightDetailSerializers(BaseSerializer):#景点详情def to_dict(self):obj = self.objreturn {'id': obj.id,'name': obj.name,'desc': obj.desc,'img': obj.banner_img.url,'content': obj.content,'score': obj.score,'min_price': obj.min_price,'province': obj.province,'city': obj.city,'area': obj.area,'town': obj.town,'comment_count': 0}

2.设计视图函数

向数据库中获取数据,文件地址:sight/views.py

class SightDetailView(DetailView):#景点详情信息def get_queryset(self):# 获取数据return Sight.objects.all()def render_to_response(self, context, **response_kwargs):#响应数据page_obj = context['object']if page_obj is not None:if page_obj.is_valid ==False:return NotFoundJsonResponse()date = serializers.SightDetailSerializers(page_obj).to_dict()return http.JsonResponse(date)return NotFoundJsonResponse()

3.构建地址的函数

文件地址:sight/urls.py

访问成功可执行sight/views.py

配置具体函数地址,参数1:自定义访问地址,参数2:访问函数的位置,参数3:连接名

urlpatterns = [path('sight/detail/<int:pk>',views.SightDetailView.as_view(),name='sight_detail'),
]

2.景点评论接口开发

1.设计返回图片格式

创建文件system/serializers.py

序列化基础图片,其他列表需要关联图片时,引用该类

from utils.serializers import BaseSerializer
class BaseImageSerializer(BaseSerializer):def to_dict(self):image = self.objreturn {'img': image.img.url,'summary': image.summary,}

2.评论列表序列化

文件地址:sight/serializers.py

class CommentListSerializers(BaseListPageSerializer):#评论列表def get_object(self, obj):user = obj.userimages = []for image in obj.images.filter(is_valid = True):images.append({'img': image.img.url,'summary': image.summary})return {'user': {'pk': user.pk,'nickname': user.nickname},'pk': obj.pk,'content': obj.content,'is_top': obj.is_top,'love_count': obj.love_count,'score': obj.score,'is_public': obj.is_public,'images': images,'created_at': obj.created_at.strftime('%Y-%m-%d %H:%M:%S'),}

3.设计视图函数

文件地址:sight/views.py

class SightCommentListView(ListView):#景点评论列表paginate_by = 10def get_queryset(self):#根据id查询景点信息sight_id = self.kwargs.get('pk', None)sight = Sight.objects.filter(pk = sight_id,is_valid = True).first()if sight:return sight.comments.filter(is_valid = True)return Comment.objects.none()def render_to_response(self, context, **response_kwargs):page_obj = context['page_obj']if page_obj is not None:data = serializers.CommentListSerializers(page_obj).to_dict()return http.JsonResponse(data)return NotFoundJsonResponse

4.构建地址函数

 文件地址:sight/urls.py

path('comment/list/<int:pk>',views.SightCommentListView.as_view(),name='sight_comment_list')

3.景点信息及门票接口开发

1.设计响应数据结构

创建门票和景点列表的类

class TicketListSerializers(BaseListPageSerializer):#门票列表def get_object(self, obj):return {'pk': obj.pk,'name': obj.name,'desc': obj.desc,'types': obj.types,'price': obj.price,'discount': obj.discount,'total_stock': obj.total_stock,'remain_stock': obj.remain_stock}
class SightInfoSerializer(BaseSerializer):#景点列表def to_dict(self):obj = self.objreturn {'pk': obj.sight.pk,'entry_explain': obj.entry_explain,'play_way': obj.play_way,'tips': obj.tips,'traffic': obj.traffic}

2.设计视图函数

class SightTicketListView(ListView):#景点门票列表视图paginate_by = 10def get_queryset(self):#根据景点id查询sight_id = self.kwargs.get('pk', None)return Ticket.objects.filter(sight_id = sight_id,is_valid = True)def render_to_response(self, context, **response_kwargs):page_obj = context['page_obj']#获取对象if page_obj is not None:data = serializers.TicketListSerializers(page_obj).to_dict()return http.JsonResponse(data)return NotFoundJsonResponse()class SightInfoDetail(DetailView):#当地址pk为None时,以下配置会生效pk_url_kwarg = None#URL中参数的名称slug_url_kwarg = 'pk'#URL中pk对应的哪一个字段(数据库中的字段)slug_field = 'sight__pk'#景点详情列表视图def get_queryset(self):return Info.objects.all()def render_to_response(self, context, **response_kwargs):page_obj = context['object']if page_obj is not None:data = serializers.SightInfoSerializer(page_obj).to_dict()return http.JsonResponse(data)return NotFoundJsonResponse()

3.构建地址函数

urlpatterns = [path('ticket/list/<int:pk>/',views.SightTicketListView.as_view(),name='sight_ticket_list'),path('sight/info/<int:pk>/',views.SightInfoDetailView.as_view(),name='sight_info')
]

4.网页检测网址

http://localhost:8000/sight/sight/detail/1/

http://localhost:8000/sight/comment/list/1/

http://localhost:8000/sight/ticket/list/1/

http://localhost:8000/sight/sight/info/1/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2682.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter学习笔记(二)------ 第一个flutter项目

一、Dart语法 dart语法较为简单&#xff0c;学过python和c后发现大同小异。不过多介绍 1.函数可变参数 可以类比*args, **kwargs&#xff0c;与之不同的是dart中&#xff0c;*args **kwargs不能同时存在 void a(int a, [float x, double b0.0]) {//do something... }a(10, …

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

问题 在你添加约束的时候&#xff0c;一般都会为其取名以方便后期的修改&#xff0c;但是如果你忘记了呢&#xff0c;如何找到系统默认的约束名 解决方法 -- 查找约束名 SELECTCONSTRAINT_NAME FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERETABLE_NAME emp ANDREFERENCED_T…

2-Ubuntu/Windows系统启动盘制作

学习目标&#xff1a; 掌握使用Win32DiskImager、Rufus等工具制作系统启动盘的基本步骤。独立将ISO镜像文件写入USB闪存驱动器&#xff0c;确保在需要时顺利安装或修复系统。通过学习如何选择正确的源文件和目标驱动器&#xff0c;理解启动盘的使用场景和注意事项&#xff0c;…

上云管理之Git/GitHub/GitLab 详解(一)

上云管理之Git/GitHub/GitLab 详解(一&#xff09; 引言1. GIT软件安装2.初始化配置与提交代码2.1. 初始化配置2.2 本地仓库代码提交2.2.1 初始化仓库并提交代码2.2.2 再次提交已修改的代码2.2.3 文件夹层次结构代码提交 2.3 GIT 的文件状态 3.GIT 分支3.1. 分支的切换与删除3.…

【UltraVNC】使用反向连接方式-部署私有远程工具(简版)

一、简要介绍 反向连接&#xff1a;客户电脑发起连接到维修工程师电脑。 场景&#xff1a;计算机A 无公网IP &#xff0c;计算机B无公网IP&#xff0c;AB直接进行远程的行为。 核心&#xff1a;借助中继方式 二、安装环境和安装包 中继器服务&#xff1a;linux系统安装包&…

技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代

在当今数字化时代&#xff0c;软件安全问题的严峻性日益凸显。随着网络攻击手段变得愈发复杂多样&#xff0c;切实保障软件系统的安全性已然成为开发者以及企业所面临的核心挑战。依据国际网络安全机构的相关报告&#xff0c;网络攻击事件的发生频率与复杂程度呈现出逐年递增的…

【图书管理与推荐系统】Python+Django网页界面+协同过滤推荐算法+网站系统

一、介绍 图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构&#xff0c;后端采用Django作为逻辑处理&#xff0c;通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有&#…

达梦asm创建磁盘组

达梦ASM磁盘组创建过程 安装dsc建库前需要配置asm磁盘组&#xff0c;通常编辑一个文件 vim /dm/dmdbms/config/create_asm_group.txt #asm script file create diskgroup ARCH asmdisk /dev/asmdisk/dsc_asm1 create diskgroup DATA asmdisk /dev/asmdisk/dsc_asm2 alter di…

Selenium常见问题解析

1、元素定位失败&#xff1a; 在使用Selenium自动化测试时&#xff0c;最常见的问题之一是无法正确地定位元素&#xff0c;这可能导致后续操作失败。解决方法包括使用不同的定位方式&#xff08;如xpath、CSS selector、id等&#xff09;&#xff0c;等待页面加载完全后再进行…

C++:set和map的使用

目录 序列式容器和关联式容器 set set类的介绍 构造和迭代器 增删查 insert find和erase erase迭代器失效 lower_bound与upper_bound multiset和set的区别 map map类的介绍 pair类型介绍 构造和迭代器 增删查 map数据修改&#xff1a;重载operator[] multimap…

达梦dsc环境dcr vote磁盘大小

达梦dsc环境中磁盘管理通过asm来实现&#xff0c;必须创建dcr和vote磁盘&#xff0c;那么这两个asm磁盘大小最小是多少&#xff1f; 32M asm文件最小为4个au&#xff0c;au大小为1M&#xff0c;因此asm文件最小为4M。但是创建vote时&#xff0c;命令只支持最小32M 通常生产环…

python操作MySQL以及SQL综合案例

1.基础使用 学习目标&#xff1a;掌握python执行SQL语句操作MySQL数据库软件 打开cmd下载安装 安装成功 connection就是一个类&#xff0c;conn类对象。 因为位置不知道&#xff0c;所以使用关键字传参。 表明我们可以正常连接到MySQL 演示、执行非查询性质的SQL语句 pytho…

鸿蒙进阶-AlphabetIndexer组件

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习AlphabetIndexer组件&#xff0c;喜欢就点点关注吧&#xff01; 通过 AlphabetIndexer 组件可以与容器组件结合&#xff0c;实现导航联动&#xff0c;以及快速定位的效果 核心用法 AlphabetIndexer不是容器组件…

Mac电脑技巧:适用于Mac的免费外置硬盘数据恢复软件

“我有一个 1 TB 的外置硬盘&#xff0c;它被意外格式化了。我尝试从中恢复丢失的数据。我把它连接到我的Mac&#xff0c;但里面什么也没找到。我正在寻找适用于Mac的免费外置硬盘数据恢复软件&#xff0c;例如奇客数据恢复Mac版或其他Mac数据恢复免费软件来扫描它并恢复数据。…

推荐一款高级的安装程序打包工具:Advanced Installer Architect

AdvanCEd Installer Architect是一款高级的安装程序打包工具&#xff0c;我们有时候可能用nsis用的多&#xff0c;Advanced Installer Architect也是一款打包工具&#xff0c;有兴趣的朋友也可以试试。有了Advanced Installer Architect你就可以创建MSI打包。 主要功能 *先进的…

LeetCode 热题100(七)【链表】(1)

7.链表 7.1相交链表&#xff08;简单&#xff09; 题目描述&#xff1a;leetcode链接 160.相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c…

OpenAI正在与台积电(TSMC)和博通(Broadcom)合作,打造自己的AI推理芯片

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

小新学习k8s第四天之发布管理

一、金丝雀发布&#xff08;灰度发布&#xff09; Deployment控制器支持自定义控制更新过程中的滚动节奏&#xff0c;如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程&#xff0c;此时&#xff0c;仅存在一部分新版本的…

大数据安全方案 验证

一、背景 文档用于记录配置 Kerberos 和 Ranger 后&#xff0c;对 HDFS、Hive 认证和鉴权的功能测试。 二、Kerberos 验证 2.1、验证功能 1&#xff0c;HDFS 认证 2.1.1、访问 HDFS Kerberos 验证前&#xff0c;访问 HDFS 失败。 Kerberos 验证后&#xff0c;访问 HDFS 成…

全面解析:云计算技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;云计算技术及其应用 全面解析&#xff1a;云计算技术及其应用 全面解析&#xff1a;云计算技术及其应用 云…