欢迎光临
我们一直在努力

Django开发restful api的最佳实践 (二)

Django开发restful api的最佳实践 (二)

本系列的第一篇我们从使用Pycharm IDE从创建项目开始,一步一步完成了项目框架的搭建,这一篇我们就开始真正的coding

  • 我们首先来定义model

    我们打算为一个类似书籍管理的系统做个api,所以我们的model就是book,作为示例,我们只保存书本的名字,即name, 然后在加两个date_created和date_modified。用于标识创建和修改时间。

    好了,编辑models.py


1
2
3
4
5
6
7
8
9
10
#api/models.py
from django.db import models
class Book(models.Model):
    name = models.CharField(max_length=255, blank=False, unique=True)
    date_created = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now=True)

    def __str__(self):
        """返回一个友好的用于表示此对象的字符串 类比java的toString"""
        return "{}".format(self.name)
  • migrate模型,migration是django中用于保证model和db schema之间的一致性的一种机制,每次我们修改了model的字段定义后,执行migrate,就可以在数据库的表中同步这些修改。

    在命令行 执行

    1
    python manage.py makemigrations

    这样就基于当前的model定义创建了一个migration

然后就要执行这次migration,

1
python manage.py migration
  • 正常情况下现在基本上我们就可以实现持久化到db了,我们来写测试用例,我们在创建app的时候,django已经为我们给每一个app生成了tests.py文件,我们的测试用例就写在这个文件中,代码如下

1
2
3
4
5
6
7
8
9
10
from django.test import TestCase
from .models import Book
class ModelTestCase(TestCase):
    def setUp(self):
        self.book = Book(name="Thinking in Python")
        def test_model_can_create_a_book(self):
            old_count = Book.objects.count()
            self.book.save()
            new_count = Book.objects.count()
            self.assertEqual(old_count + 1, new_count)

然后我们运行

1
python manage.py test

发现可以通过测试 ok至此我们完成了除了djangorestframework之外的所有工作了,最后一篇再来写drf的代码。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » Django开发restful api的最佳实践 (二)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址