如何向石墨烯中的 GraphQL 查询添加非字段参数?这是一个用例的示例。我希望能够做到:
{
hsv(h: 40, s: 128, v: 54) {
r
g
b
name
}
Run Code Online (Sandbox Code Playgroud)
使用这个 Django 模型:
from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator,
class Color(models.Model):
name = models.CharField(
"name",
max_length=24,
null=False, blank=False)
r = models.IntegerField(
"red", null=False, blank=False,
validators=[MinValueValidator(0), MinValueValidator(255)]
)
g = models.IntegerField(
"green", null=False, blank=False,
validators=[MinValueValidator(0), MinValueValidator(255)]
)
b = models.IntegerField(
"blue", null=False, blank=False,
validators=[MinValueValidator(0), MinValueValidator(255)]
)
Run Code Online (Sandbox Code Playgroud)
以及这个 GraphQL 对象类型和基于它的查询:
from graphene import ObjectType, IntegerField, Field, relay
from graphene_django import DjangoObjectType
from .django …Run Code Online (Sandbox Code Playgroud) 我想使用石墨烯一口气创造出很多人。该文档仅提及创建这样的人的方式:
class CreatePerson(graphene.Mutation):
class Input:
name = graphene.String()
age = graphene.Int()
ok = graphene.Boolean()
person = graphene.Field(lambda: Person)
@staticmethod
def mutate(root, args, context, info):
person = Person(name=args.get('name'), age=args.get('age'), mobile=args.get('mobile'))
ok = True
return CreatePerson(person=person, ok=ok)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以完成它吗?
我是 Relay 的新手,正在尝试组合我的第一个应用程序。我已经有一个 GraphQL 服务器(使用 Graphene),它通过 SQLAlchemy 自动映射由 PostgreSQL 数据库支持,并作为 Flask 应用程序发布。现在,我正在尝试组合前端,看起来中继编译器在客户端需要一个 GraphQL 模式文件。我想知道是否有办法让这个架构文件动态自动生成,以及如何设置。
我使用https://github.com/kriasoft/react-static-boilerplate作为我的应用程序的起点。
谢谢。
我正在使用 Python 包 Flask、SQLAlchemy、Graphene 和 Graphene-SQLAlchemy 构建 GraphQL API。我遵循了SQLAlchemy + Flask 教程。我能够执行查询和更改来创建记录。现在我想知道更新现有记录的最佳方法是什么。
这是我当前的脚本schema.py:
from graphene_sqlalchemy import SQLAlchemyObjectType
from database.batch import BatchOwner as BatchOwnerModel
import api_utils # Custom methods to create records in database
import graphene
class BatchOwner(SQLAlchemyObjectType):
"""Batch owners."""
class Meta:
model = BatchOwnerModel
interfaces = (graphene.relay.Node,)
class CreateBatchOwner(graphene.Mutation):
"""Create batch owner."""
class Arguments:
name = graphene.String()
# Class attributes
ok = graphene.Boolean()
batch_owner = graphene.Field(lambda: BatchOwner)
def mutate(self, info, name):
record = {'name': name}
api_utils.create('BatchOwner', …Run Code Online (Sandbox Code Playgroud) 我目前使用的是graphene-django v2.0,我对如何上传和下载图像等文件一无所知,有没有人举过一个查询示例,您可以在其中下载图像,也可以在变量中上传一?
我有一个看起来像这样的 Django 模型(当然是简化的):
from django.db import models
from polymorphic.models import PolymorphicModel
class Tournament(models.Model):
slug = models.CharField(max_length=100, unique=True)
class Event(PolymorphicModel):
tournament = models.ForeignKey(Tournament, related_name='events')
slug = models.CharField(max_length=100)
class PracticeEvent(Event):
pass
class MatchEvent(Event):
winner = models.CharField(max_length=100, null=True, blank=True, default=None)
Run Code Online (Sandbox Code Playgroud)
锦标赛包括两种赛事:练习赛和比赛。我想使用 GraphQL 和 Graphene 公开这个模型。这是我想出的:
import graphene
from graphene_django import DjangoObjectType
from . import models
class TournamentType(DjangoObjectType):
class Meta:
model = models.Tournament
exclude_fields = ('id',)
class EventType(graphene.Interface):
tournament = graphene.Field(TournamentType, required=True)
slug = graphene.String(required=True)
class PracticeEventType(DjangoObjectType):
class Meta:
model = models.PracticeEvent
interfaces = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 django 中使用 graphQL 查询。基本上我有两个应用程序,我的“api”应用程序包含我进行查询所需的一切,另一个称为“前端”,我从中调用 api 以使用这些查询。
我可以使用 GraphQL 视图在其中键入查询并且它运行良好,但是每当我尝试进行查询时,我都会得到以下信息:“OrderedDict([('users', None)])”
编码:
在“api”中,我的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: …Run Code Online (Sandbox Code Playgroud) 我有 2 个要查询的数据库,但我只能从其中一个获得结果。我将 mongoengine 与 python 和石墨烯一起使用(这是我的第一次)。我已经用尽了我的搜索,我不明白如何解决这个问题。这是我的代码:
import graphene
from mongoengine import Document, connect
from mongoengine.context_managers import switch_collection
from mongoengine.fields import (
StringField,
UUIDField,
IntField,
FloatField,
BooleanField,
)
from graphene_mongo import MongoengineObjectType
from mongoengine.connection import disconnect
class UserModel(Document):
meta = {"collection": "users"}
userID = UUIDField()
first_name = StringField()
last_name = StringField()
class Users(MongoengineObjectType):
class Meta:
model = UserModel
class UsersQuery(graphene.ObjectType):
users = graphene.List(Users)
user = graphene.Field(Users, userID=graphene.UUID())
def resolve_users(self, info):
db = connect("users")
users = list(UserModel.objects.all())
db.close()
return users
def …Run Code Online (Sandbox Code Playgroud) 我有一些 django 模型通用关系字段,我希望它们出现在 graphql 查询中。石墨烯支持通用类型吗?
class Attachment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
file = models.FileField(upload_to=user_directory_path)
Run Code Online (Sandbox Code Playgroud)
class Aparto(models.Model):
agency = models.CharField(max_length=100, default='Default')
features = models.TextField()
attachments = GenericRelation(Attachment)
Run Code Online (Sandbox Code Playgroud)
石墨烯类:
class ApartoType(DjangoObjectType):
class Meta:
model = Aparto
Run Code Online (Sandbox Code Playgroud)
class Query(graphene.ObjectType):
all = graphene.List(ApartoType)
def resolve_all(self, info, **kwargs):
return Aparto.objects.all()
schema = graphene.Schema(query=Query)
Run Code Online (Sandbox Code Playgroud)
我希望附件字段出现在 graphql 查询结果中。仅显示代理和功能。
使用:
\n\n我正在使用 Django、GraphQL 和 Vue-Apollo 测试单页 vue app\xc2\xb4s。
\n\n如果我csrf_exempt在我的视图中使用,一切都会在前端运行。
urlpatterns = [\n<...>\n path("graphql", csrf_exempt(GraphQLView.as_view(graphiql=True))),\n<...>\nRun Code Online (Sandbox Code Playgroud)\n\n现在我想要 CSRF 保护我的请求。\n在理解 CSRF 保护的过程中,我认为 DjangoGraphQLView所需要的只是接收X-Csrftoken请求标头中的“值”。所以我专注于csrf以不同的方式发送值......通过像这样的单一视图
path(\'csrf/\', views.csrf),\npath("graphql", GraphQLView.as_view(graphiql=True)),\nRun Code Online (Sandbox Code Playgroud)\n\n或者通过确保 cookieensure_csrf_cookie
然后在我的ApolloClienti 中获取这些 Value 并将其与请求 Header 一起发回。
这是当我从 Django-Vue 页面发送 GraphQL 请求时 Django 打印的内容。
\n\nForbidden (CSRF token missing or …Run Code Online (Sandbox Code Playgroud) graphene-python ×10
graphql ×8
django ×5
python ×3
mongodb ×1
mongoengine ×1
reactjs ×1
relayjs ×1
sqlalchemy ×1
vue-apollo ×1