首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRF APIView在使用apisauce时返回空数据对象,但不返回浏览器视图中的空数据对象。

DRF APIView在使用apisauce时返回空数据对象,但不返回浏览器视图中的空数据对象。
EN

Stack Overflow用户
提问于 2020-10-31 17:42:03
回答 2查看 213关注 0票数 0

我正在尝试查询一个模型,以检查一个对象是否存在,是否使用以下APIview函数。不幸的是,我无法接收任何响应对象来响应本机apisauce get函数,如下所示

apisauce函数

代码语言:javascript
复制
const checkIfUserExists = (email) =>
  client.get("/account/user-exists/?email=" + email);

APIView类

代码语言:javascript
复制
class UserExistsView(APIView):

    """Checks if user exists or not"""

    def get(self, request, *args, **kwargs):
        
        username = self.request.GET['email']

        try:
           
            user = models.UserProfile.objects.get(email=username)
        except models.UserProfile.DoesNotExist:
           
            return Response(data={'message': False})
        else:
            return Response(data={'message': True}) 

来自浏览器的结果

我在这里做错什么了?

在shell <Response status_code=200, "text/html; charset=utf-8">上打印结果

EN

回答 2

Stack Overflow用户

发布于 2020-11-01 09:28:05

你可以做得更简单:

代码语言:javascript
复制
class UserExistsView(APIView):
    """Checks if user exists or not"""

    def get(self, request, *args, **kwargs):
        
        email = self.request.GET['email']
        user_exists = models.UserProfile.objects.filter(email=email).exists()

        return Response(
            data={'message': user_exists}
        )

如果您创建了一个QuerySet,然后调用了.exists(),Django将只在对象位于数据库中时调用.exists()函数,但是它不会查询它,这在您从JS调用时要快得多。

票数 1
EN

Stack Overflow用户

发布于 2020-11-01 09:41:13

假设您有一个类库组件,您可以像下面这样修改您的函数,跟踪用户在状态中的存在。我没有在你的服务器端代码中看到任何错误。但是在您的javascript代码中,您没有处理这个承诺。

代码语言:javascript
复制
checkUserExists= (email) => {
    client.get("/account/user-exists/?email=" + email)
    .then(response=>{
     this.setState({isUserExists : response.data.messgae})
    )
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64624712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档