Python 重用DRF序列化程序时graphql中的KeyError
因此,我试图实现graphql并重用我的serializer.py文件,但得到的是“名称‘请求’未定义”。我可以看到它在序列化程序上引用了什么,但不知道如何修复它。它似乎挂在self.context[“request”]上,我在使用drf时常常从put方法中弹出密码字段。关于如何最好地解决这个问题,有什么想法吗。我仍在学习,似乎正在碰壁。任何帮助都将不胜感激。先谢谢你 序列化程序.pyPython 重用DRF序列化程序时graphql中的KeyError,python,django,django-rest-framework,graphql,Python,Django,Django Rest Framework,Graphql,因此,我试图实现graphql并重用我的serializer.py文件,但得到的是“名称‘请求’未定义”。我可以看到它在序列化程序上引用了什么,但不知道如何修复它。它似乎挂在self.context[“request”]上,我在使用drf时常常从put方法中弹出密码字段。关于如何最好地解决这个问题,有什么想法吗。我仍在学习,似乎正在碰壁。任何帮助都将不胜感激。先谢谢你 序列化程序.py class UserSerializer(serializers.ModelSerializer):
class UserSerializer(serializers.ModelSerializer):
"""Serializes the user model"""
# name = serializers.CharField(max_length=10)
specialties = serializers.PrimaryKeyRelatedField(
many=True, queryset=models.Specialty.objects.all()
)
class Meta:
model = models.User
fields = "__all__"
extra_kwargs = {
"password": {"write_only": True, "style": {"input_type": "password"}}
}
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs)
if self.context["request"].method == "PUT":
self.fields.pop("password")
def create(self, validated_data):
"""Create and return a new user"""
user = models.User.objects.create_user(
email=validated_data["email"],
first_name=validated_data["first_name"],
last_name=validated_data["first_name"],
password=validated_data["password"],
)
return user
class CreateUser(SerializerMutation):
class Meta:
serializer_class = UserSerializer
突变。py
class UserSerializer(serializers.ModelSerializer):
"""Serializes the user model"""
# name = serializers.CharField(max_length=10)
specialties = serializers.PrimaryKeyRelatedField(
many=True, queryset=models.Specialty.objects.all()
)
class Meta:
model = models.User
fields = "__all__"
extra_kwargs = {
"password": {"write_only": True, "style": {"input_type": "password"}}
}
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs)
if self.context["request"].method == "PUT":
self.fields.pop("password")
def create(self, validated_data):
"""Create and return a new user"""
user = models.User.objects.create_user(
email=validated_data["email"],
first_name=validated_data["first_name"],
last_name=validated_data["first_name"],
password=validated_data["password"],
)
return user
class CreateUser(SerializerMutation):
class Meta:
serializer_class = UserSerializer
错误
/graphql处的键错误/
“请求”
请求方法:获取
请求URL:http://localhost:8000/graphql/
Django版本:3.0.10
异常类型:KeyError
异常值:
“请求”
异常位置:/dsinfinity/backend/ds_admin/serializers.py在uu init_uuuuuuuu66行
Python可执行文件:/usr/local/bin/Python
Python版本:3.7.9
Python路径:
['/dsinfinity/backend',,
“/usr/local/lib/python37.zip”,
“/usr/local/lib/python3.7”,
“/usr/local/lib/python3.7/lib dynload”,
'/usr/local/lib/python3.7/site-packages']
服务器时间:周四,2020年10月1日21:24:51+0000
回溯切换到复制和粘贴视图
/内部文件中的usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py
响应=获取响应(请求)…
▶ 局部变量
/响应中的usr/local/lib/python3.7/site-packages/django/core/handlers/base.py
响应=自身。通过中间件(e,请求)处理异常…
▶ 局部变量
/响应中的usr/local/lib/python3.7/site-packages/django/core/handlers/base.py
响应=包装的回调(请求,*回调参数,**回调参数)…
▶ 局部变量
/包装视图中的usr/local/lib/python3.7/site-packages/django/views/decorators/csrf.py
返回视图函数(*args,**kwargs)…
▶ 局部变量
/视图中的usr/local/lib/python3.7/site-packages/django/views/generic/base.py
self=cls(**initkwargs)…
▶ 局部变量
/usr/local/lib/python3.7/site-packages/graphene\u django/views.py in\u\u init__
schema=graphene\u settings.schema…
▶ 局部变量
/usr/local/lib/python3.7/site-packages/graphene\u django/settings.py in\u\u getattr__
val=执行导入(val,attr)…
▶ 局部变量
/执行导入中的usr/local/lib/python3.7/site-packages/graphene\u django/settings.py
从字符串返回导入字符串(val,设置名称)…
▶ 局部变量
/从字符串导入中的usr/local/lib/python3.7/site-packages/graphene\u django/settings.py
module=importlib.import\u模块(模块路径)…
▶ 局部变量
/导入模块中的usr/local/lib/python3.7/importlib/\uuuuuu init\uuuuuuuuu.py
返回_bootstrap._gcd_导入(名称[级别:],包,级别)…
▶ 局部变量
输入
…
▶ 局部变量
在“查找”和“加载”中
…
▶ 局部变量
在"查找"和"加载"中解锁
…
▶ 局部变量
在(加载)中(未锁定)
…
▶ 局部变量
在exec_模块中
…
▶ 局部变量
在已删除帧的情况下调用
…
▶ 局部变量
/中的dsinfinity/backend/dsinfinity/schema.py
导入ds_admin.schema…
▶ 局部变量
/中的dsinfinity/backend/ds_admin/schema.py
类CreateUser(SerializerMutation):…
▶ 局部变量
/usr/local/lib/python3.7/site-packages/graphene/utils/subclass_和u meta.py在uuu init_子类中__
超级类。uuu初始化子类u,带u元uuu(**选项)…
▶ 局部变量
/usr/local/lib/python3.7/site-packages/graphene_django/rest_framework/mutation.py in_uuuuinit_subclass_uwith_meta__
serializer=序列化程序\u类()…
▶ 局部变量
/初始化中的dsinfinity/backend/ds_admin/serializers.py__
如果self.context[“request”].method==“PUT”:…
▶ 局部变量