前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的新增接口集管理数据库操作(十一)

Django的新增接口集管理数据库操作(十一)

作者头像
zx钟
发布2019-07-19 14:25:19
5200
发布2019-07-19 14:25:19
举报
文章被收录于专栏:测试游记测试游记

从上文的ajax请求可以看出:我们点击添加之后会调用POST,来将数据以json的格式传输给/callections/

所以我们需要在我们的视图函数中增加CallectionsView类的post请求部分函数。 定义一个函数:def post(self,request): 首先获取ajax传入的数据:json_data = request.body 打上断点进行一次简单的测试

新建接口集 在页面上点击【新建接口集】,在弹出的对话框中输入接口集名称,点击确定。 可以看到调试的时候返回的request.body的内容为一个b'{"name":"666"}'

调试 我们需要将它转换成正常的字典格式: json.loads(json_data.decode('utf8'))

转换为字典格式 这样使用字典的get方法就能拿到前台传输给后台的数据了。 当获取到这个数据的时候,有两种可能:

  • 已经创建过了
  • 还没有创建过 不过到这里要先等一下,因为数据库还没建起来呢。直接空想有点不直观。 现在先去models中写一下表结构。
代码语言:javascript
复制
from django.db import models

from utils.models import ModelBase


class Callections(ModelBase):
    name = models.CharField(max_length=64, verbose_name="接口集名称", help_text="接口集名称")

    class Meta:
        ordering = ['-update_time', '-id']
        db_table = "tb_tag"  # 指明数据库表名

    def __str__(self):
        return self.name

这个表的结构非常简单,只需要ID和name就可以了,然而ID可以省略,所以就这样就完成了。 下面执行一下数据库迁移。 点击Run manage.py Task… 然后输入makemigrations workspace和migrate workspace

数据库迁移 自动新建了:apps/workspace/migrations/0001_initial.py 它是Django帮我们自动生成的一段代码,是帮助我们与数据库进行交流的。

0001 最后打开数据库可视化工具查看有没有生成新的表

数据库可视化工具

补全post接口:

代码语言:javascript
复制
    def post(self, request):
        json_data = request.body
        if not json_data:
            return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
        # 将json转化为dict
        dict_data = json.loads(json_data.decode('utf8'))
        tag_name = dict_data.get('name')
        if tag_name and tag_name.strip():
            tag_tuple = models.Callections.objects.get_or_create(name=tag_name)
            tag_instance, tag_created_bolean = tag_tuple
            new_tag_dict = {
                "id": tag_instance.id,
                "name": tag_instance.name
            }
            return to_json_data(errmsg="接口集创建成功", data=new_tag_dict) if tag_created_bolean else \
                to_json_data(errno=Code.DATAEXIST, errmsg="接口集名已存在")
        else:
            return to_json_data(errno=Code.PARAMERR, errmsg="接口集名为空")

为了测试,我们修改一下get接口

代码语言:javascript
复制
    def get(self, request):
        tags = models.Callections.objects.values('id', 'name')
        return render(request, 'index/callections.html', locals())

将数据从数据库中拿出来,丢给html让他给我们渲染出来。

显示 嘿嘿嘿,这样就完成了post提交和get的显示了,但是接口的数量还需要新建一个表,然后计算对应接口的数量。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档