【问题标题】:Django do not ask user from database for requestDjango不向数据库中的用户请求请求
【发布时间】:2020-01-15 10:28:06
【问题描述】:

在我的 Django 项目中,我有一个使用 Django Rest Framework 的 APIView 构建的公共 API 端点。它不需要知道有关用户的任何信息。尽管如此,Django 还是自动从数据库中获取会话和用户。有没有办法不这样做,因为它会导致两次不必要的数据库命中?

代码如下:

class TermListView(APIView):
    permission_classes = ()

    def get(self, request, format=None):
        qs = Term.objects.all().only('original_word')
        return Response([term.original_word for term in qs])

【问题讨论】:

  • 您如何确定您正在为会话和用户访问数据库?同样的调试工具应该能够向您显示该数据库查询的堆栈,然后您可以消除导致它的原因。
  • 我正在使用 Django 调试工具栏。感谢您的快速重播;我找到了解决方案并将其发布为答案。

标签: django django-rest-framework django-authentication


【解决方案1】:

您需要将authentication_classes = () 添加到 View 类。这告诉 Django 不要担心用户。或者您也可以为所有端点全局配置此选项。

【讨论】:

  • ...您的原始帖子在您编辑之前已经有authentication_classes = ()
猜你喜欢
  • 1970-01-01
  • 2010-12-03
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多