models.py

from django.db import models

class Course(models.Model):
"""
课程表
"""
title = models.CharField(verbose_name='课程名称',max_length=32)
course_img = models.CharField(verbose_name='课程图片',max_length=64)
level_choices = (
(1,'初级'),
(2,'中级'),
(3,'高级'),
)
level = models.IntegerField(verbose_name='课程难易程度',choices=level_choices,default=1) def __str__(self):
return self.title class CourseDetail(models.Model):
"""
课程详细
"""
course = models.OneToOneField(to='Course')
slogon = models.CharField(verbose_name='口号',max_length=255)
why = models.CharField(verbose_name='为什么要学?',max_length=255)
recommend_courses = models.ManyToManyField(verbose_name='推荐课程',to='Course',related_name='rc') def __str__(self):
return "课程详细:"+self.course.title class Chapter(models.Model):
"""
章节
"""
num = models.IntegerField(verbose_name='章节')
name = models.CharField(verbose_name='章节名称',max_length=32)
course = models.ForeignKey(verbose_name='所属课程',to='Course') def __str__(self):
return self.name

urls.py

from django.conf.urls import url,include

from api.views import course

urlpatterns = [

    url(r'^course/$', course.CourseView.as_view({'get':'list'})),
url(r'^course/(?P<pk>\d+)$', course.CourseView.as_view({'get':'retrieve'})), url(r'^test$', course.test),
]

course.py

from rest_framework.views import APIView
from rest_framework.response import Response
from api import models from rest_framework import serializers class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = models.Course
fields = "__all__" class CourseDetailSerializer(serializers.ModelSerializer): # one2one/fk/choice
title = serializers.CharField(source='course.title')
img = serializers.CharField(source='course.course_img')
level = serializers.CharField(source='course.get_level_display') # m2m
recommends = serializers.SerializerMethodField() class Meta:
model = models.CourseDetail
fields = ['course','title','img','level','slogon','why','recommends'] def get_recommends(self,obj):
# 获取推荐的所有课程
queryset = obj.recommend_courses.all() return [{'id':row.id,'title':row.title} for row in queryset] # View
# APIView
# GenericAPIView
from rest_framework.viewsets import GenericViewSet,ViewSetMixin,ModelViewSet
class CourseView(ViewSetMixin,APIView): def list(self,request,*args,**kwargs):
"""
课程列表接口
:param request:
:param args:
:param kwargs:
:return:
"""
ret = {'code':1000,'data':None} try:
queryset = models.Course.objects.all()
ser = CourseSerializer(instance=queryset,many=True)
ret['data'] = ser.data
except Exception as e:
ret['code'] = 1001
ret['error'] = '获取课程失败' return Response(ret) def retrieve(self,request,*args,**kwargs):
"""
课程详细接口
:param request:
:param args:
:param kwargs:
:return:
"""
ret = {'code': 1000, 'data': None} try:
# 课程ID=2
pk = kwargs.get('pk') # 课程详细对象
obj = models.CourseDetail.objects.filter(course_id=pk).first() ser = CourseDetailSerializer(instance=obj,many=False) ret['data'] = ser.data except Exception as e:
ret['code'] = 1001
ret['error'] = '获取课程失败' return Response(ret) def test(request,*args,**kwargs):
from django.shortcuts import HttpResponse
obj = models.Course.objects.filter(id=2).first()
print(obj.title)
print(obj.level) #
print(obj.get_level_display() ) #
return HttpResponse('...')

访问  

http://127.0.0.1:8000/api/v1/course/  

  

返回结果如下

访问  

http://127.0.0.1:8000/api/v1/course/1  

  

返回结果如下

  

最新文章

  1. jquery如何判断checkbox(复选框)是否被选中 ...
  2. Put your application in production
  3. 及时取消代码中的AsyncTask
  4. 【代码笔记】iOS-将log日志保存到文件
  5. centos安装php php-fpm
  6. 面试集锦-常量,const, const 对指针的影响
  7. C语言 动态库简单开发
  8. requesting java ast from selection
  9. 【Shell脚本学习14】Shell echo命令
  10. OpenGL第12-14讲小结
  11. CLR via C# 序列化读书笔记
  12. 关于entity framework
  13. SQLServer .mdf和.ldf文件
  14. 项目架构开发:数据访问层之Logger
  15. HDU1114Piggy-Bank(完全背包)
  16. TensorFlow 学习资料
  17. 深度学习中dropout策略的理解
  18. sale.order
  19. 在cxGrid表格中如何获得当前列的字段名
  20. BFGS算法(转载)

热门文章

  1. 【算法】LeetCode算法题-Valid Parentheses
  2. February 28th, 2018 Week 9th Wednesday
  3. Windows Live Writer 2012在Blogjava管理和发布博客
  4. 更高的压缩比,更好的性能–使用ORC文件格式优化Hive
  5. 分布式消息中间件rocketmq的原理与实践
  6. SpringMVC实现国际化过程中所遇问题
  7. 如何在python中把两个列表的各项分别合并为列表
  8. java语言的特征
  9. YOLO 从数据集制作到训练
  10. 吴恩达课后作业学习1-week4-homework-two-hidden-layer -1