项目应用代码设计
project\models设计
之前我们已经写过项目的model,但是写的比较简单,我们这里来丰富一下
from django.db import modelsfrom django.contrib.auth.models import User# Create your models here.class Projects(models.Model):name = models.CharField(max_length=200, unique=True)desc = models.CharField(max_length=200, null=True, blank=True, default='')create_time = models.DateTimeField(auto_now_add=True)update_time = models.DateTimeField(auto_now=True)class Meta:# db_table数据表名称db_table = 'projects'# 描述信息,表示单数形式的显示verbose_name = '项目'# 表示复数形式的显示verbose_name_plural = verbose_name# 根据id 排序ordering = ['id']def __str__(self):return self.name
生成表
生成迁移脚本
(env) D:\code\caseplatform>python manage.py makemigrations
生成数据表
(env) D:\code\caseplatform>python manage.py migrate
project\serializers.py设计
from rest_framework import serializersfrom .models import Projectsclass ProjectsSerializer(serializers.ModelSerializer):class Meta:model = Projectsexclude = ('update_time',)extra_kwargs = {"create_time": {"read_only": True,"format": "%Y年%m月%d日 %H:%M:%S"}}
project\views 设计
from .models import Projectsfrom .serializers import ProjectsSerializerfrom rest_framework import filters, viewsetsfrom rest_framework import permissionsclass ProjectViewSet(viewsets.ModelViewSet):# 一般需要指定queryset、serializer_class类属性queryset = Projects.objects.all()serializer_class = ProjectsSerializer# 指定过滤引擎filter_backends = [filters.SearchFilter, filters.OrderingFilter]# 过滤的字段search_fields = ['name', 'desc']ordering_fields = ['name']permission_classes = [permissions.IsAuthenticated]
project\urls设计
注意,这里需要新增urls.py 文件,如果之前已经新增,这里不需要新增
from project import viewsfrom rest_framework import routers# 创建SimpleRouter路由对象router = routers.SimpleRouter()# 注册projectsrouter.register('projects', views.ProjectViewSet)urlpatterns = router.urls
