【效能平台】内置函数管理模块——获取内置函数列表数据、查看内置函数详情数据(八)

一、平台页面展示

1、内置函数列表展示

在这里插入图片描述

2、内置函数详情数据展示

在这里插入图片描述

二、模型类定义

from django.db import models

# Create your models here.
from django.db import models

from utils.base_models import BaseModel


class DebugTalks(BaseModel):
    name = models.CharField('debugtalk文件名称', max_length=200, default='debugtalk.py', help_text='debugtalk文件名称')
    debugtalk = models.TextField(null=True, default='#debugtalk.py', help_text='debugtalk.py文件')
    project = models.OneToOneField('projects.Projects', on_delete=models.CASCADE,
                                   related_name='debugtalks', help_text='所属项目')

    class Meta:
        db_table = 'tb_debugtalks'
        verbose_name = 'debugtalk.py文件'
        verbose_name_plural = verbose_name
        ordering = ('id',)

    def __str__(self):
        return self.name

三、序列化器定义

根据列表页面上可知:展示id、项目名称、内置函数名称,并且不需要输入;
debugtalk不需要展示,但是需要输入。

class DebugtalksModelSerializer(serializers.ModelSerializer):
	project=serializers.StringRelatedField(label='所属项目名称',help_text='所属项目名称',read_only=True)
	
	class Meta:
		model=Debugtalks
		fields=['id','name','project','debugtalk']
		extra_kwargs={
    
    
			'debugtalk':{
    
    
				'write_only':True	
			}
		}

class DebugtalkSerializer(serializers.ModelSerializer):
	class Meta:
		model=Debugtalks
		fields=['id','debugtalk']

四、视图类定义

提示:

1、此模块不涉及新增内置函数和删除内置函数功能,所以没必要继承ModelViewSet
2、ModelViewSet类继承了ListModelMixin,UpdateModelMixin,RetrieveModelMixin,CreateModelMixin,DestroyModelMixin
3、GenericViewSet继承了ViewSetMixin、GenericAPIView
4、继承了ViewSetMixin,有自动生成路由机制的功能

class DebugtalksViewSet(ListModelMixin,
					RetrieveModelMixin,
					UpdateModelMixin,
					GenericViewSet):
	queryset=Debugtalks.objects.all()
	serializer_class=DebugtalksModelSerializer
	pagination_class=PageNumberPagination
	permission_classes = [permissions.IsAuthenticated]
		
	def get_serializer_class(self):
		if self.action=='retrieve':
			return DebugtalkSerializer
		else:
			return super().get_serializer_class

五、路由定义

router=routers.SimpleRouter()
router.register(r'debugtalk',DebugtalksViewSet)
urlpatterns=[
	path('',include(router.urls))
]

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YZL40514131/article/details/125284634