mirror of
				https://github.com/graphql-python/graphene-django.git
				synced 2025-11-04 09:57:53 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Please read [UPGRADE-v1.0.md](https://github.com/graphql-python/graphene/blob/master/UPGRADE-v1.0.md) to learn how to upgrade to Graphene `1.0`.
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
#  Graphene-Django [](https://travis-ci.org/graphql-python/graphene-django) [](https://badge.fury.io/py/graphene-django) [](https://coveralls.io/github/graphql-python/graphene-django?branch=master)
 | 
						|
 | 
						|
 | 
						|
A [Django](https://www.djangoproject.com/) integration for [Graphene](http://graphene-python.org/).
 | 
						|
 | 
						|
## Installation
 | 
						|
 | 
						|
For instaling graphene, just run this command in your shell
 | 
						|
 | 
						|
```bash
 | 
						|
pip install "graphene-django>=1.0"
 | 
						|
```
 | 
						|
 | 
						|
### Settings
 | 
						|
 | 
						|
```python
 | 
						|
INSTALLED_APPS = (
 | 
						|
    # ...
 | 
						|
    'graphene_django',
 | 
						|
)
 | 
						|
 | 
						|
GRAPHENE = {
 | 
						|
    'SCHEMA': 'app.schema.schema' # Where your Graphene schema lives
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### Urls
 | 
						|
 | 
						|
We need to set up a `GraphQL` endpoint in our Django app, so we can serve the queries.
 | 
						|
 | 
						|
```python
 | 
						|
from django.conf.urls import url
 | 
						|
from graphene_django.views import GraphQLView
 | 
						|
 | 
						|
urlpatterns = [
 | 
						|
    # ...
 | 
						|
    url(r'^graphql', GraphQLView.as_view(graphiql=True)),
 | 
						|
]
 | 
						|
```
 | 
						|
 | 
						|
## Examples
 | 
						|
 | 
						|
Here is a simple Django model:
 | 
						|
 | 
						|
```python
 | 
						|
from django.db import models
 | 
						|
 | 
						|
class UserModel(models.Model):
 | 
						|
    name = models.CharField(max_length=100)
 | 
						|
    last_name = models.CharField(max_length=100)
 | 
						|
```
 | 
						|
 | 
						|
To create a GraphQL schema for it you simply have to write the following:
 | 
						|
 | 
						|
```python
 | 
						|
from graphene_django import DjangoObjectType
 | 
						|
import graphene
 | 
						|
 | 
						|
class User(DjangoObjectType):
 | 
						|
    class Meta:
 | 
						|
        model = UserModel
 | 
						|
 | 
						|
class Query(graphene.ObjectType):
 | 
						|
    users = graphene.List(User)
 | 
						|
 | 
						|
    @graphene.resolve_only_args
 | 
						|
    def resolve_users(self):
 | 
						|
        return UserModel.objects.all()
 | 
						|
 | 
						|
schema = graphene.Schema(query=Query)
 | 
						|
```
 | 
						|
 | 
						|
Then you can simply query the schema:
 | 
						|
 | 
						|
```python
 | 
						|
query = '''
 | 
						|
    query {
 | 
						|
      users {
 | 
						|
        name,
 | 
						|
        lastName
 | 
						|
      }
 | 
						|
    }
 | 
						|
'''
 | 
						|
result = schema.execute(query)
 | 
						|
```
 | 
						|
 | 
						|
To learn more check out the following [examples](examples/):
 | 
						|
 | 
						|
* **Schema with Filtering**: [Cookbook example](examples/cookbook)
 | 
						|
* **Relay Schema**: [Starwars Relay example](examples/starwars)
 | 
						|
 | 
						|
 | 
						|
## Contributing
 | 
						|
 | 
						|
After cloning this repo, ensure dependencies are installed by running:
 | 
						|
 | 
						|
```sh
 | 
						|
python setup.py install
 | 
						|
```
 | 
						|
 | 
						|
After developing, the full test suite can be evaluated by running:
 | 
						|
 | 
						|
```sh
 | 
						|
python setup.py test # Use --pytest-args="-v -s" for verbose mode
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
### Documentation
 | 
						|
 | 
						|
The documentation is generated using the excellent [Sphinx](http://www.sphinx-doc.org/) and a custom theme.
 | 
						|
 | 
						|
The documentation dependencies are installed by running:
 | 
						|
 | 
						|
```sh
 | 
						|
cd docs
 | 
						|
pip install -r requirements.txt
 | 
						|
```
 | 
						|
 | 
						|
Then to produce a HTML version of the documentation:
 | 
						|
 | 
						|
```sh
 | 
						|
make html
 | 
						|
```
 |