创建REST API Django

时间:2018-03-12 18:42:56

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

我想说的第一件事是我之前没有使用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获取GET模型,哪里有书它只是任何型号的占位符)?
  4. P.S。如果这篇文章缺少任何信息,请在评论中告诉我,我将编辑这篇文章。

1 个答案:

答案 0 :(得分:1)

好的,让我们看看:

  1. 文档是你最好的朋友。对于Django来说尤其如此,它具有很好的documentation。通常,在Django中有三种使用身份验证的方法:

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

    • 您可以通过创建其他模型(如个人资料)并通过OneToOneField进行关联来扩展它。

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

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

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

  2. 问题的第一部分见上文。关于删除用户组:它可能是可能的(尽管我从未尝试过),但我没有看到太多意义。它实际上没有任何开销,同时为Django的管理面板提供了一些有用的东西,如人员/管理员组。

  3. 绝对有一个通用的解决方案。只需使用通用API视图即可。我再次链接documentation。简而言之,您希望使用GenericAPIView类的子类。 例如,假设要列出/users/路径下的用户对象:

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

    对于您的特定示例,您将使用RetrieveAPIView。如果您想使用pk进行查找,则甚至无需对其进行配置。