未提供项目说明
django-gql的Python项目详细描述
Django图形
gqlgen公司
gqlgen是一个GraphQL的生成器工具。在
Usage: gqlgen [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: all Generate all schema types field-resolver Generate field resolver. type Generate one type type-resolver Generate all schema types
如何使用
^{pr2}$# utils.pydefcontext_builder():return{'version':1}
# settings.pyMIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','djgql.auth.middleware.BasicAuthMiddleware',]GRAPHQL_SCHEMA_FILE=os.path.join(BASE_DIR,'starwar.gql')GRAPHQL={'SCHEMA':'starwar.schema.schema','ENABLE_PLAYGROUND':True,'CONTEXT_BUILDER':'starwar.utils.context_builder}
importtypingfromenumimportEnumfromdjango.confimportsettingsfromgqlimportquery,gql,type_resolver,enum_type,field_resolverfromgql.build_schemaimportbuild_schema_from_filefromdjgql.authimportlogin_requiredfrompydanticimportBaseModeltype_defs=gql("""type Query { hello(name: String!): String!}""")@enum_typeclassEpisode(Enum):NEWHOPE=1EMPIRE=2JEDI=3classCharacter(BaseModel):id:typing.Textname:typing.Optional[typing.Text]friends:typing.Optional[typing.List[typing.Optional['Character']]]appears_in:typing.Optional[typing.List[typing.Optional[Episode]]]classHuman(Character):id:typing.Textname:typing.Optional[typing.Text]friends:typing.Optional[typing.List[typing.Optional[Character]]]appears_in:typing.Optional[typing.List[typing.Optional[Episode]]]home_planet:typing.Optional[typing.Text]classDroid(Character):id:typing.Textname:typing.Optional[typing.Text]friends:typing.Optional[typing.List[typing.Optional[Character]]]appears_in:typing.Optional[typing.List[typing.Optional[Episode]]]primary_function:typing.Optional[typing.Text]@query@login_requireddefhero(parent,info,episode:typing.Optional[Episode])->typing.Optional[Character]:request=info.context['request']print(request.user)returnHuman(id='test')@field_resolver('Human','name')defhuman_name(parent,info):return'Jack'@type_resolver('Character')defresolve_character_type(obj,info,type_):ifisinstance(obj,Human):return'Human'ifisinstance(obj,Droid):return'Droid'returnNoneschema=build_schema_from_file(settings.GRAPHQL_SCHEMA_FILE)
- 项目
标签: