首页 > 其他分享 >djangorestframework 学习

djangorestframework 学习

时间:2023-06-18 18:12:10浏览次数:27  
标签:__ help models Catalog 学习 djangorestframework import class

创建记账 app

python manage.py startapp record

首先需要确认数据库表结构,分两张表:分类表、账单表
分类表包括:分类名称
账单表包括:消费金额、消费时间、消费用户(关联到用户表)、消费分类(关联到分类表)、消费的具体描述。
根据以上信息创建 Model

from django.db import models
from django.contrib.auth.models import User


class Catalog(models.Model):
    catalog = models.CharField(max_length=200, help_text='输入分类名称')

    def __str__(self):
        return self.catalog


class Consume(models.Model):
    price = models.DecimalField(max_digits=6, decimal_places=2, help_text='输入消费金额')
    consume_time = models.DateTimeField(help_text='消费时间')
    # 外键关联到用户
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    # 消费类型
    consume_type = models.ForeignKey('Catalog', on_delete=models.SET_NULL, null=True)
    desc = models.CharField(max_length=2000, help_text='消费具体描述')


from rest_framework import serializers


class CatalogSerializer(serializers.ModelSerializer):
    class Meta:
        model = Catalog
        fields = ('id', 'catalog')


class ConsumeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Consume
        fields = '__all__'

视图类:

# views.py

from rest_framework import viewsets
from .models import Catalog, CatalogSerializer, Consume, ConsumeSerializer


class CatalogViewSet(viewsets.ModelViewSet):
    queryset = Catalog.objects.all()
    serializer_class = CatalogSerializer

注册接口:

from django.urls import include, path
from .views import CatalogViewSet
from rest_framework import routers


router = routers.DefaultRouter()
router.register(r'catalog', CatalogViewSet)  # 注册路由到ManViewSet视图

urlpatterns = [
    path('', include(router.urls)),  # 使用router路由
]

在管理后台插入几条数据,访问接口:
image
成功!

记账功能的开发

class ConsumeViewSet(viewsets.ModelViewSet):
    queryset = Consume.objects.all()
    serializer_class = ConsumeSerializer

    # 当前用户即为这条记录所属的用户
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

标签:__,help,models,Catalog,学习,djangorestframework,import,class
From: https://www.cnblogs.com/new-bee-2023/p/17489435.html

相关文章

  • linux学习笔记(31)容器
    【1】容器的介绍(1.1)基本概念容器:针对应用(服务)所需的运行环境,比如依赖、目录、网络、用户等整体封装的技术。封装好的应用(服务)环境叫做镜像,可以理解成迷你版虚拟机或者豪华软件包。当前大多数镜像,是软件厂商自己封装好的,我们直接下载使用即可。如:nginx。核心三个......
  • 8086汇编语言基础学习(二)—— 汇编指令和伪指令
    8086汇编语言基础学习(二)——汇编指令和伪指令数据传输指令:1.MOV指令描述:赋值指令格式:MOV DST,SRT功能:双操作数,将SRT赋值给DST注意:DST,SRT不能同时为mem,对于所有的双操作数皆是如此。不允许对CS赋值其中一个是段寄存器时,另一个就必须是数据寄存器将立即数送入mem时......
  • Scala学习(二)条件控制与循环
    1、if语句:vara=20;varn=if(a>10)40else1;得到n=40 2、类型推断:if(a>40)40else"dsaf"返回的是父类型Anyif(a>10)40如果后面没有跟else语句,则默认返回Unit类型。相当于java中的void或null;上面的语句相当于if(a>10)40else()3、while循环varn=10......
  • linux学习笔记(30)swap交换分区
    【1】查看swap(1.1)swap在线配置/扩容流程lsblk//查看物理盘和分区情况free-h//查看当前内存df-hT//查看当前磁盘挂载分布于磁盘格式#swap配置mkswap/dev/sdb2//格式化磁盘分区为swapblkid/dev/sdb2//查看分区......
  • nrf52832学习-app_timer模块
    简单使用:app_timer是模块,使用时需要在sdk_config.h文件中将其使能添加头文件app_timer.h定义Timer定时器唯一识别号_my_timer_id和需要的定时时间常量MY_TIMER_INTERVALAPP_TIMER_DEF(_my_timer_id);#defineMY_TIMER_INTERVALAPP_TIMER_TICKS(_milliseconds)......
  • 前端学习C语言 - 第二篇(常量、运算符、控制和循环)
    常量、运算符、控制和循环前文我们写了第一个c语言程序,了解了基本的数据类型。本篇将继续学习:常量、运算符、控制语句和循环语句。常量#define常量#define是用来定义常量和宏的预处理指令。定义常量的一般形式:#define常量名常量值。就像这样:#defineMAX_NUM100//定义整型......
  • java web模板学习+1
    今天找到一个模板很厉害,代码开源的,拔下来就能跑。下面是他的博客地址和他的源代码地址。博客地址:开源一套简单通用的后台管理系统-huanzi-qch-博客园(cnblogs.com)开源地址:https://gitee.com/huanzi-qch/base-admin......
  • nrf52832学习-app_scheduler模块
    软件调度模块,但不是用来做任务调度的,而是为了在main函数中执行中断任务。说白了就是一个队列,中断中将数据和执行的函数放入队列中,然后main函数里一直去调用查询去执行,从而不阻塞中断app_sched_execute用来在main函数中执行,一直调用app_sched_event_put函数是在中断中调用将任务添......
  • Python学习日志一,初识Python
    一、向python说你好世界(print("Helloworld!!"))二、pycharm插件推荐使用上图这个插件就可以翻译代码里面的英文单词了三、Pycharm常用快捷键ctrl+alt+s:打开软件设置shift+alt+上/下:将当前行代码上移或者下移Ctrl+shift+f10:运行当前代码f6:重命名文件四......
  • opencv学习(一)
    在计算机眼中,图像就是由一个个像素点组成,而像素点中,又有三个值(R,G,B),也就是红、绿、蓝三个颜色,即三原色。故,opencv默认的读取图片的格式是RGB。一般格式:importcv2importmatplotlib.pyplotaspltimportnumpyasnpimg=cv2.imread('C:/Users/hellou/Desktop/zh......