【问题标题】:Creating an REST API Django [closed]创建 REST API Django [关闭]
【发布时间】:2018-08-20 21:31:13
【问题描述】:

首先我想说的是,我以前没有使用过python和任何与python相关的框架。不过,我有编程经验。

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

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

附:如果这篇文章缺少任何信息,请在评论中告诉我,我会编辑这篇文章。

【问题讨论】:

    标签: python django django-rest-framework django-rest-auth


    【解决方案1】:

    好的,让我们看看:

    1. 文档是您最好的朋友。对于具有出色documentation 的Django 尤其如此。一般来说,Django 中使用身份验证的方式有以下三种:

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

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

      • 或者,您可以通过子类化(通常是 AbstractBaseUser)提供自己的 User 类并在 Django 的设置中注册它。

      • 最后,您可以编写完全自定义的后端了。

      有关定制指南,请参阅此article

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多