Python GraphQL:[Errno 111]连接被拒绝 描述

Python GraphQL:[Errno 111]连接被拒绝 描述,python,django,graphql,django-graphql-jwt,Python,Django,Graphql,Django Graphql Jwt,我正在尝试为一个具有不同类型用户(司机、客户、系统管理员和授权人)的交通系统构建一个API。为此,我创建了一个AbstractUser,并为上述所有不同的用户使用继承关系。 关于将JWT添加到模型中,我已经阅读了,但是每当我想要创建一个新用户时,我都会遇到如下错误: mutation { register( email: "new_user@email.com", username: "new_user", password1:

我正在尝试为一个具有不同类型用户(司机、客户、系统管理员和授权人)的交通系统构建一个API。为此,我创建了一个
AbstractUser
,并为上述所有不同的用户使用继承关系。 关于将JWT添加到模型中,我已经阅读了,但是每当我想要创建一个新用户时,我都会遇到如下错误:

mutation {
  register(
    email: "new_user@email.com",
    username: "new_user",
    password1: "supersecretpassword",
    password2: "supersecretpassword",
  ) {
    success,
    errors,
    token,
    refreshToken
  }
}
复制步骤
  • 这是我的模型:
  • 来自django.db导入模型的
    
    从django.contrib.auth.models导入AbstractUser
    #在这里创建您的模型。
    类Usermodel(AbstractUser,models.Model):
    电话号码=models.CharField(
    最大长度=11,
    空白=真,
    详细名称=“电话号码”
    )
    USERNAME_FIELD=“USERNAME”#例如:“用户名”、“电子邮件”
    EMAIL_FIELD=“EMAIL”#例如:“EMAIL”、“primary_EMAIL”
    定义(自我):
    返回self.username
    类驱动程序(Usermodel、models.Model):
    national_id=models.CharField(
    最大长度=10,
    空白=真,
    详细名称=“国家ID”
    )
    profile\u picture=models.ImageField(
    空白=真,
    空=真
    )
    状态_选项=[
    ('1','Free'),
    (“2”,“忙”)
    ]
    驱动程序状态=models.CharField(
    最大长度=1,
    选择=状态\选择
    )
    额定值=models.FloatField(
    默认值=-1
    )
    排名=models.IntegerField(
    默认值=-1
    )
    类元:
    详细名称='驱动程序'
    详细名称复数='Drivers'
    类授权人(Usermodel、models.Model):
    类元:
    详细名称='授权人'
    详细名称复数=‘授权人’
    类客户(Usermodel、models.Model):
    类元:
    详细名称='客户'
    详细名称复数='客户'
    类管理员(Usermodel、models.Model):
    类元:
    详细的\u name='Administrator'
    详细的\u名称\u复数='Administrators'
    
  • 用户模式
  • 导入石墨烯
    从graphene导入突变、ObjectType、InputObjectType
    from.models导入驱动程序、授权人、客户、管理员
    从graphene_django.types导入djangObjectType
    类DriverType(DjangObjectType):
    类元:
    型号=驱动器
    类AuthorizerType(DjangObjectType):
    类元:
    模型=授权人
    类查询(对象类型):
    驱动器=石墨烯。字段(
    DriverType,
    id=graphene.id()
    )
    授权人=石墨烯字段(
    授权类型,
    id=graphene.id()
    )
    所有驱动程序=graphene.List(DriverType)
    所有授权人=graphene.List(AuthorizerType)
    def解析所有驱动程序(自身、信息、**kwargs):
    返回Driver.objects.all()
    def解析驱动程序(自身、信息、**kwargs):
    id=kwargs.get('id')
    如果id不是无:
    返回Driver.objects.get(pk=id)
    def解析授权人(自我、信息、**kwargs):
    id=kwargs.get('id')
    如果id不是无:
    返回Driver.objects.get(pk=id)
    def解析所有授权人(自我、信息、**kwargs):
    返回Authorizer.objects.all()
    类DriverInput(InputObject类型):
    first_name=graphene.String()
    last_name=graphene.String()
    email=graphene.String()
    用户名=graphene.String()
    phone_no=graphene.String()
    national_id=graphene.String()
    密码=graphene.String()
    类authorinInput(InputObject类型):
    first_name=graphene.String()
    last_name=graphene.String()
    email=graphene.String()
    用户名=graphene.String()
    phone_no=graphene.String()
    密码=graphene.String()
    类CreateDriver(变异):
    类参数:
    驱动程序数据=驱动程序输入()
    driver=石墨烯字段(DriverType)
    def突变(自身、信息、驱动程序数据=无):
    司机(
    first\u name=驱动程序数据。first\u name,
    last\u name=驱动程序数据。last\u name,
    电子邮件=驱动程序\u data.email,
    username=driver\u data.username,
    电话号码=司机号码。电话号码,
    national_id=驾驶员数据。national_id,
    密码=驱动程序\数据。密码
    )
    driver.save()
    返回CreateDriver(
    司机
    )
    类更新驱动程序(变异):
    类参数:
    id=graphene.id()
    驱动程序数据=驱动程序输入()
    driver=石墨烯字段(DriverType)
    def突变(自身、信息、id、驱动程序数据=无):
    #TODO:id不存在时的错误处理
    driver=driver.objects.get(pk=id)
    driver.first\u name=driver\u data.first\u name
    driver.last\u name=driver\u data.last\u name
    driver.email=driver\u data.email
    driver.username=driver\u data.username
    driver.phone\u no=driver\u data.phone\u no
    driver.national\u id=driver\u data.national\u id
    driver.password=driver\u data.password
    driver.save()
    返回更新的驱动程序(驱动程序=驱动程序)
    类authorinInput(InputObject类型):
    first_name=graphene.String()
    last_name=graphene.String()
    email=graphene.String()
    用户名=graphene.String()
    phone_no=graphene.String()
    密码=graphene.String()
    类别CreateAuthorizer(变异):
    类参数:
    授权人_data=authorinput()
    授权人=石墨烯字段(授权输入)
    def变异(自身、信息、授权人数据=无):
    授权人(
    firstname=授权人\数据。firstname,
    last_name=授权人_数据。last_name,
    email=授权人_data.email,
    用户名=授权人_data.username,
    电话号码=授权人号码。电话号码,
    password=授权人\u data.password
    )
    授权人保存()
    返回CreateAuthorizer(authorizer=authorizer)
    类UpdateAuthorizer(变异):
    类参数:
    id=graphene.id()
    授权人_data=authorinput()
    授权人=石墨烯字段(授权人)
    
    aniso8601==7.0.0
    asgiref==3.2.10
    Django==3.0.8
    django-filter==2.3.0
    django-graphql-auth==0.3.11
    django-graphql-jwt==0.3.0
    graphene==2.1.8
    graphene-django==2.12.1
    graphql-core==2.3.2
    graphql-relay==2.0.1
    Pillow==7.2.0
    pkg-resources==0.0.0
    promise==2.3
    PyJWT==1.7.1
    pytz==2020.1
    Rx==1.6.1
    singledispatch==3.4.0.3
    six==1.15.0
    sqlparse==0.3.1
    Unidecode==1.1.1
    
    # ...
    
    
    # Application definition
    
    INSTALLED_APPS = [
        "django.contrib.admin",
        "django.contrib.auth",
        "django.contrib.contenttypes",
        "django.contrib.sessions",
        "django.contrib.messages",
        "django.contrib.staticfiles",
        
        # Package apps
        "corsheaders",
        "graphene_django",
        "graphql_jwt.refresh_token.apps.RefreshTokenConfig",
        "graphql_auth",
        "django_filters",
    
        # Created apps
        "users", # or whatever the name of the app is with your custom users model
    ]
    
    MIDDLEWARE = [
        "django.middleware.security.SecurityMiddleware",
        "django.contrib.sessions.middleware.SessionMiddleware",
        "corsheaders.middleware.CorsMiddleware",
        "django.middleware.common.CommonMiddleware",
        "django.middleware.csrf.CsrfViewMiddleware",
        "django.contrib.auth.middleware.AuthenticationMiddleware",
        "django.contrib.messages.middleware.MessageMiddleware",
        "django.middleware.clickjacking.XFrameOptionsMiddleware",
    ]
    
    ROOT_URLCONF = "<project_name>.urls"
    
    # TEMPLATES = ...
    # WSGI_APPLICATION = ...
    # DATABASES = ...
    
    # Ensure that custom user is set
    AUTH_USER_MODEL = "users.CustomUser"
    
    # AUTH_PASSWORD_VALIDATORS = ...
    
    # Internationalization
    # https://docs.djangoproject.com/en/3.0/topics/i18n/
    
    # ...
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/3.0/howto/static-files/
    # ...
    
    GRAPHENE = {
        "SCHEMA": "backend.schema.schema",
        "MIDDLEWARE": ["graphql_jwt.middleware.JSONWebTokenMiddleware",],
    }
    
    AUTHENTICATION_BACKENDS = [
        "graphql_jwt.backends.JSONWebTokenBackend",
        "django.contrib.auth.backends.ModelBackend",
        "graphql_auth.backends.GraphQLAuthBackend",
    ]
    
    GRAPHQL_JWT = {
        "JWT_VERIFY_EXPIRATION": True,
        "JWT_LONG_RUNNING_REFRESH_TOKEN": True,
    }
    
    EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
    
    class CustomUser(AbstractUser):
        ...
    
        luck_number = models.IntegerField()
        ...
    
    
    # Rest of your settings ...
    
    GRAPHQL_AUTH = {}
    
    
    GRAPHQL_AUTH = {
      REGISTER_MUTATION_FIELDS = {
        "email": "String",
        "username": "String",
        "luck_number": "Int",
      }
    }