Graphene-Django เป็นไลบรารีโอเพ่นซอร์สที่ให้การผสานรวมอย่างราบรื่นระหว่าง Django ซึ่งเป็นเฟรมเวิร์กเว็บ Python ระดับสูง และ Graphene ซึ่งเป็นไลบรารีสำหรับการสร้าง GraphQL API ไลบรารีช่วยให้นักพัฒนาสามารถสร้าง GraphQL API ใน Django ได้อย่างรวดเร็วและมีประสิทธิภาพ ในขณะที่ยังคงรักษาประสิทธิภาพในระดับสูงไว้ได้
หากต้องการติดตั้ง Graphene-Django ให้รันคำสั่งต่อไปนี้:
pip install graphene-django
หลังการติดตั้ง ให้เพิ่ม 'graphene_django' ลงในรายการ INSTALLED_APPS
ของโปรเจ็กต์ Django ของคุณและกำหนดสคีมา GraphQL ในการตั้งค่าโปรเจ็กต์ของคุณ:
INSTALLED_APPS = [
# ...
'graphene_django' ,
]
GRAPHENE = {
'SCHEMA' : 'myapp.schema.schema'
}
หากต้องการใช้ Graphene-Django ให้สร้างไฟล์ schema.py
ในไดเร็กทอรีแอป Django และกำหนดประเภทและการสืบค้น GraphQL ของคุณ:
import graphene
from graphene_django import DjangoObjectType
from . models import MyModel
class MyModelType ( DjangoObjectType ):
class Meta :
model = MyModel
class Query ( graphene . ObjectType ):
mymodels = graphene . List ( MyModelType )
def resolve_mymodels ( self , info , ** kwargs ):
return MyModel . objects . all ()
schema = graphene . Schema ( query = Query )
จากนั้นเปิดเผย GraphQL API ในไฟล์ urls.py
ของโปรเจ็กต์ Django ของคุณ:
from django . urls import path
from graphene_django . views import GraphQLView
from . import schema
urlpatterns = [
# ...
path ( 'graphql/' , GraphQLView . as_view ( graphiql = True )), # Given that schema path is defined in GRAPHENE['SCHEMA'] in your settings.py
]
Graphene-Django ให้การสนับสนุนสำหรับการทดสอบ GraphQL API โดยใช้ไคลเอนต์ทดสอบของ Django หากต้องการสร้างการทดสอบ ให้สร้างไฟล์ tests.py
ในไดเร็กทอรีแอป Django ของคุณแล้วเขียนกรณีทดสอบของคุณ:
from django . test import TestCase
from graphene_django . utils . testing import GraphQLTestCase
from . import schema
class MyModelAPITestCase ( GraphQLTestCase ):
GRAPHENE_SCHEMA = schema . schema
def test_query_all_mymodels ( self ):
response = self . query (
'''
query {
mymodels {
id
name
}
}
'''
)
self . assertResponseNoErrors ( response )
self . assertEqual ( len ( response . data [ 'mymodels' ]), MyModel . objects . count ())
เรายินดีต้อนรับการมีส่วนร่วมกับ Graphene-Django เสมอ! ในการเริ่มต้น ให้ตรวจสอบตัวติดตามปัญหาของพื้นที่เก็บข้อมูลและแนวทางการสนับสนุน
Graphene-Django เปิดตัวภายใต้ใบอนุญาต MIT
หากคุณพบปัญหาใดๆ หรือมีคำถามเกี่ยวกับ Graphene-Django โปรดส่งปัญหาได้ที่พื้นที่เก็บข้อมูล GitHub อย่างเป็นทางการ คุณยังสามารถขอความช่วยเหลือและแบ่งปันประสบการณ์ของคุณกับชุมชน Graphene-Django บน Discord