ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

drf_eg

2019-07-27 16:42:48  阅读:187  来源: 互联网

标签:get eg response import pk data self drf


models

from django.db import models


class EgTest(models.Model):
    eg_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50, verbose_name='名称')
    sort = models.CharField(max_length=50, verbose_name='种类')
    memo = models.CharField(max_length=200, verbose_name='备注')
    content = models.TextField(verbose_name='内容')

    class Meta:
        db_table = 'eg_test'
        verbose_name = '模板'

serializers


from rest_framework import serializers

from eg_test.models import EgTest


class EgTesterializer(serializers.ModelSerializer):
    class Meta:
        model = EgTest
        fields = '__all__'

tests

import json

from django.test import TestCase, Client
from rest_framework.test import APIClient


class TempaleTestCase(TestCase):
    def test_tpl(self):
        client = Client()

        # 获取全部
        response = client.get('http://127.0.0.1:8000/tests/')
        self.assertEqual(response.status_code, 200, "get tpl error")

        # 添加记录
        data = dict(
            name="流程0", sort="第三方0", memo="随便0", content="流程图0"
        )
        url = 'http://127.0.0.1:8000/tests/'
        response = client.post(url, data)
        retdata = response.json()['data']
        self.assertEqual(response.status_code, 200, "post tmplate error")
        self.assertTrue(retdata is not None)
        eg_id = str(retdata['id'])
		# 获取单一
        url = 'http://127.0.0.1:8000/tests/{}/'.format(eg_id)
        response = client.get(url)
        self.assertEqual(response.status_code, 200, "get tpl error")

		# 修改单一
        data = dict(
            name='1111111'
        )
        url = 'http://127.0.0.1:8000/tests/{}/'.format(eg_id)
        response = client.get(url,data)
        self.assertEqual(response.status_code, 200, "put tpl error")
        
		# 删除单一
        url = 'http://127.0.0.1:8000/tests/{}/'.format(eg_id)
        response = client.delete(url)
        self.assertEqual(response.status_code, 200, "delete message error")

views

from django.http import Http404
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response

from eg_test.models import EgTest
from eg_test.serializers import EgTesterializer

"""
@apiDefine workgroups 工作阶段
"""


class TestList(APIView):
    def get(self, request, format=None):
        tpls = EgTest.objects.all()
        serializer = EgTesterializer(tpls, many=True)
        return Response({"data":serializer.data})

    def post(self, request, format=None):
        serializer = EgTesterializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response({"data":{'id': serializer.instance.pk}})


class TestDetail(APIView):
    def get_object(self, pk):
        try:
            return EgTest.objects.get(pk=pk)
        except EgTest.DoesNotExist:
            raise Http404

    def get(self, request, pk, format=None):
        tpl = self.get_object(pk)
        serializer = EgTesterializer(tpl)
        return Response({"data":serializer.data})


    def delete(self, request, pk, format=None):
        tpl = self.get_object(pk)
        tpl.delete()
        return Response({'id': pk})

    def put(self, request, pk, format=None):
        tpl = self.get_object(pk)
        serializer = EgTesterializer(tpl, data=request.data,partial=True)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response({'id': serializer.instance.pk})

标签:get,eg,response,import,pk,data,self,drf
来源: https://blog.csdn.net/wsc_0506/article/details/97525834

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有