创建 REST API Django

Creating an REST API Django

我想说的第一件事是,我以前没有使用 python 和任何框架 python 相关的经验。但是,我有编程经验。

所以,我想使用 python 和框架 djangodjangorestframework 创建一个 REST API。我已经成功地创建了数据库(使用 postgresql)并且还成功地创建了初始迁移。但是,我认为这是最简单的部分,我对即将实现的事情有一些疑问:

  1. 首先我想创建一个身份验证系统。我看到 djangorestframework 它能够自行管理身份验证,但我没能做到 运行。你能指导我找到一些好的 tutorials/provide 代码示例并简要解释一下吗?
  2. 初始迁移后,我看到 django 自己创建了一些用于身份验证和会话管理的表(auth_user、auth_user_groups 等)。有什么办法可以为用户使用我自己的模型吗?另外,我确实相信我不需要 django 提供的所有功能(例如 auth_user_groups)。有什么办法可以去除那些不需要的功能吗?
  3. 我能够创建一个 API 端点(通过遵循教程),returns 一些数据(基于我创建的模型、序列化程序和视图)。但是,由于我想创建更多 API 端点,因此我还必须为我的每个模型创建一个序列化程序和视图(这可能需要一段时间)。有什么方法可以创建一个通用的序列化器和一个通用的视图方法,这样我就不需要编写一个特定的序列化器和一个视图方法(例如,我想通过 /api/books/book/:id 获取模型,在哪里预订它只是任何模型的占位符)?

P.S。如果此 post 缺少任何信息,请在评论中告诉我,我将编辑此 post。

好的,让我们看看:

  1. 文档是您最好的朋友。对于具有出色 documentation 的 Django 来说尤其如此。在Django中一般有3种使用认证的方式:

    • 默认用户 class (django.contrib.auth.user.models) 开箱即用。

    • 您可以通过创建其他模型(如配置文件)并通过 OneToOneField 链接来扩展它。

    • 或者,您可以通过 subclassing(通常是 AbstractBaseUser)提供您自己的用户 class 并在 Django 的设置中注册它。

    • 终于可以编写完全自定义的后端了。

    有关自定义指南,请参阅此 article

  2. 问题的第一部分见上一段。关于删除用户组:它可能是可能的(虽然我从未尝试过),但我认为没有多大意义。它几乎没有任何开销,同时为 Django 的管理面板提供了一些有用的东西,比如 staff/admin 组。

  3. 绝对有一个通用的解决方案。只需使用 通用 API 视图 。同样,我正在链接 documentation。简而言之,您想使用 GenericAPIView class 的子 classes。 例如,假设要在 /users/ 路径下列出用户对象:

    url(r'^/users/', ListCreateAPIView.as_view(queryset=User.objects.all(), serializer_class=UserSerializer), name='user-list')
    

    对于您的特定示例,您将使用 RetrieveAPIView。如果你想用 pk 查找它,你甚至不必配置它。