I am trying to use graphQL queries in django. Basically I have two apps, my 'api' app which contains everything I need to make the queries and another one called 'frontend' from which I call the api to use these queries.
I can use the GraphQL view to type queries in it and it works perfectly, but whenever I try to make the query, I get this: "OrderedDict([('users', None)])"
Result of my query in the GraphQl view
The code:
In 'api' my schema.py:
import graphene import graphql_jwt from graphene import relay, ObjectType, AbstractType, List, String, Field,InputObjectType from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField from datetime import date, datetime from django.contrib.auth.models import User from django.contrib.auth import get_user_model .... class Query(graphene.ObjectType): me = graphene.Field(UserType) users = graphene.List(UserType) profile = relay.Node.Field(ProfileNode) all_profiles = DjangoFilterConnectionField(ProfileNode) def resolve_users(self, info): ### Returns all users ### user = info.context.user if user.is_anonymous: raise Exception('Not logged!') if not user.is_superuser: raise Exception('premission denied') return User.objects.all() def resolve_me(self, info): ### Returns logged user ### user = info.context.user if user.is_anonymous: raise Exception('Not logged!') return user def resolve_all_profiles(self, info, **kwargs): ### Returns all profiles ### return Profile.objects.all() ..... def execute(my_query): schema = graphene.Schema(query=Query) return schema.execute(my_query) And the views.py that calls the app 'api' in my app frontend:
from django.shortcuts import render import graphene from api import schema from django.contrib.auth import authenticate def accueil(request): if request.user.is_authenticated: check = "I am logged" else: check = "I am not logged" result = schema.execute("""query { users { id username } }""") return render(request, 'frontend/accueil.html', {'result' : result.data, 'check' : check}) The template :
<h1>OTC</h1> <p> the users are : {{result}}</p> <br/> <p>{{check}}</p> <a href="{%url 'login' %}">login</a> <a href="{%url 'logout' %}">logout</a> and finally:
and the error in the console:
An error occurred while resolving field Query.users Traceback (most recent call last): File "/home/victor/myenv/lib/python3.5/site-packages/graphql/execution/executor.py", line 311, in resolve_or_error return executor.execute(resolve_fn, source, info, **args) File "/home/victor/myenv/lib/python3.5/site-packages/graphql/execution/executors/sync.py", line 7, in execute return fn(*args, **kwargs) File "/home/victor/poc2/poc2/api/schema.py", line 67, in resolve_users user = info.context.user AttributeError: 'NoneType' object has no attribute 'user' Traceback (most recent call last): File "/home/victor/myenv/lib/python3.5/site-packages/graphql/execution/executor.py", line 330, in complete_value_catching_error exe_context, return_type, field_asts, info, result) File "/home/victor/myenv/lib/python3.5/site-packages/graphql/execution/executor.py", line 383, in complete_value raise GraphQLLocatedError(field_asts, original_error=result) graphql.error.located_error.GraphQLLocatedError: 'NoneType' object has no attribute 'user'
infoin resolve_users?infoi don't handle it