Introduction to Django GraphQL
Django provides different types of features to the users; graphql is one of the features that Django provides. Typically graphql is an open-source data query management tool used to manipulate the different languages for APIs and provides the existing data at the runtime to fulfill query requirements. In other, we can say that Django graphql is one of the most powerful tools, and it is also more extensible to the REST API of Django. Django GraphQL is not an API framework like REST; it is just a language that helps us share data in a new fashion or per our requirements.
What is Django GraphQL?
Web APIs are the motors that power many of our applications today. For a long time, REST has been the prevailing engineering for APIs. With REST APIs, you, by and large, make URLs for each open object of information. Suppose we’re fabricating a REST API for motion pictures – we’ll have URLs for the actual films, entertainers, grants, chiefs, and makers. It’s now getting clumsy! This could mean a lot of solicitations for one cluster of related information. Envision you were the client of a low-fueled cell phone over a sluggish web association; this present circumstance isn’t extraordinary.
GraphQL isn’t API engineering like REST, a language that allows us to share related information in a more straightforward design. Instead, we’ll utilize it to plan an API for films. Facebook initially made it, yet presently, it is under graphql; with the help of graphql, we can manage runtime data, which means manipulating data as per our requirements.
We influence GraphQL’s framework to characterize the information we need to access the API. We then, at that point, make a pattern for the API, the arrangement of permitted inquiries to recover and modify information.
Django GraphQL API
Let’s see the graphql API as follows:
There are three basic operations of GraphQL: reading data, writing data, manipulating data, and receiving real-time data whenever required. GraphQL provides some predefined schema and standard schema between client and server.
Given below are the features of GraphQL as follows:
- First, it is static, so there is no need to define the variable.
- It is decoupled from the backend.
- Underflows did not happen here.
- Third, it is based on language and HTTP.
- Therefore, it is not a required cost for documentation.
- By using graphql API, we can save bandwidth.
- A GraphQL blueprint sets a solitary wellspring of truth in a GraphQL application. It offers an association and a method for unifying its whole API.
- Using graphql, we can easily handle a round trip which means request and response.
- Firmly characterized information types decrease miscommunication between the client and the server.
- GraphQL is contemplative. A client can demand a rundown of information types accessible. This is great for auto-creating documentation.
- By using graphql with API, we can easily handle the existing queries.
- In graphql, we have many open-source features unavailable in REST API.
- GraphQL doesn’t direct particular application engineering. However, it very well may be presented on top of a current REST API and can work with existing API the board apparatuses.
Django GraphQL New Project
Let’s create a new project for API as follows:
First, we must have Python and an understanding of Django; here, we try to create a student management project. So first, open the terminal we execute the below command as follows.
Code:
mkdir stud_management
cd stud_management
After that, we need to set the virtual environment for the newly created project, so we need to install the virtual environment using the below command.
Code:
pip install virtualenv
virtualenv env
Now we have a virtual environment, so start the Django project using the below command.
Code:
django-admin startproject stud_management
cd stud_management
django-admin startapp student
Now we can check the setting.py file of our application, as shown below code.
Code:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
' student ',
]
In the next step, we need to create the models inside the model file, as shown below code.
Code:
from django.db import models
class Stud(models.Model):
stud_name = models.CharField(max_length=255)
class Meta:
verbose_name_plural = 'studnames'
def __str__(self):
return self.stud_name
class studclass(models.Model):
classname = models.CharField(max_length=150)
classteacher = models.CharField(max_length=100')
studcount = models.CharField(max_length=13)
class Meta:
conduct= ['Conducted_Date']
def __str__(self):
return self.stud_name
class subject(models.Model):
subject_name = models.CharField(max_length=10)
topic= models.CharField(max_length=100)
class Meta:
ordering = ['Conducted_Date']
def __str__(self):
return self.subjectname
Explanation:
- In the above code, we created three models as shown; now, we need to register our model in the admin file as shown below code.
Code:
from django.contrib import admin
from .models import Stud, studclass, subject
admin.site.register(Stud)
admin.site.register(studclass)
admin.site.register(subject)
After registration, we need to migrate with the help of the below commands as follows.
Code:
python manage.py makemigrations
python manage.py migrate
Once migration is done, we can start the server using the below command.
Code:
python manage.py runserver
Now we need to add the graphql url inside the url.py file as follows.
Code:
from django.contrib import admin
from django.urls import path
from graphene_django.views import GraphQLView
from student.schema import schema
urls = [
path('admin/', admin.site.urls),
path("graphql", GraphQLView.as_view(graphiql=True, schema=schema)),
]
Now create a schema, and after creating the schema, we need to test graphql API.
Let’s consider the stud.json file below.
Code:
[
{
"model": "studclass",
"classname":"First" ,
"classteache":"Jenny"
"studcount": 34
},
{
"model": "studclass",
"classname":"Second" ,
"classteache":"Jhon"
"studcount": 30
}
}
]
Now we need to run the below command to load data.
Code:
python manage.py loaddata stud.json
After executing the above command, we can see the output on the screen below.
Output:
Conclusion
With the help of the above article, we saw Django graphql. From this article, we saw basic things about Django graphql, and we also saw the features and installation of Django graphql and how we use it in Django graphql.