Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:The';照片';属性没有与其关联的文件_Python_Django_Reactjs_Django Rest Framework - Fatal编程技术网

Python ValueError:The';照片';属性没有与其关联的文件

Python ValueError:The';照片';属性没有与其关联的文件,python,django,reactjs,django-rest-framework,Python,Django,Reactjs,Django Rest Framework,我同时使用react和django,似乎遇到了一个大问题。我在这个网站上找到的大多数解决方案都建议检查模板是否重复,但我没有使用django的默认模板引擎。当我使用model_to_dict(driver_object)时会出现此错误。驱动程序对象有一张照片,我在模型中将其设置为null=true。请帮帮我,我不知道怎么修 型号.py class Person(SoftDeletionModel): name = CharField(max_length=64) email =

我同时使用react和django,似乎遇到了一个大问题。我在这个网站上找到的大多数解决方案都建议检查模板是否重复,但我没有使用django的默认模板引擎。当我使用model_to_dict(driver_object)时会出现此错误。驱动程序对象有一张照片,我在模型中将其设置为null=true。请帮帮我,我不知道怎么修

型号.py

class Person(SoftDeletionModel):
    name = CharField(max_length=64)
    email = CharField(blank=True, null=True, max_length=64)
    contact_no = PositiveIntegerField()
    address = CharField(max_length=256)
    birth_date = DateField()
    sex = CharField(max_length=1, choices=SEX)
    photo = FileField(default='client/src/images/users.png')


class Driver(Person):
    user = OneToOneField(User, on_delete=models.CASCADE, null=True)
    application_date = DateField()
  user_type = SignInView.get_user_type(user)
    user_staff = SignInView.get_user_staff(user_type, user)
    return Response(data={
        "token": token.key,
        "user": model_to_dict(user),
        "user_type": user_type,
        "user_staff": model_to_dict(user_staff)
    }, status=200)

 @staticmethod
def get_user_staff(user_type, user):
    if user_type == "system_admin":
        return user
    if user_type == "driver":
        return Driver.objects.get(user=user)
    if user_type == "supervisor":
        return Supervisor.objects.get(user=user)
    if user_type == "operations_manager":
        return OperationsManager.objects.get(user=user)
    if user_type == "clerk":
        return Clerk.objects.get(user=user)
视图.py

class Person(SoftDeletionModel):
    name = CharField(max_length=64)
    email = CharField(blank=True, null=True, max_length=64)
    contact_no = PositiveIntegerField()
    address = CharField(max_length=256)
    birth_date = DateField()
    sex = CharField(max_length=1, choices=SEX)
    photo = FileField(default='client/src/images/users.png')


class Driver(Person):
    user = OneToOneField(User, on_delete=models.CASCADE, null=True)
    application_date = DateField()
  user_type = SignInView.get_user_type(user)
    user_staff = SignInView.get_user_staff(user_type, user)
    return Response(data={
        "token": token.key,
        "user": model_to_dict(user),
        "user_type": user_type,
        "user_staff": model_to_dict(user_staff)
    }, status=200)

 @staticmethod
def get_user_staff(user_type, user):
    if user_type == "system_admin":
        return user
    if user_type == "driver":
        return Driver.objects.get(user=user)
    if user_type == "supervisor":
        return Supervisor.objects.get(user=user)
    if user_type == "operations_manager":
        return OperationsManager.objects.get(user=user)
    if user_type == "clerk":
        return Clerk.objects.get(user=user)
我认为问题的根源在于django抛出了一个错误,而不是在照片为空时返回None。有什么解决办法吗?请帮忙

回溯

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 158, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 156, in _get_response
    response = response.render()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/response.py", line 106, in render
    self.content = self.rendered_content
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/response.py", line 72, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/renderers.py", line 105, in render
    allow_nan=not self.strict, separators=separators
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/json.py", line 28, in dumps
    return json.dumps(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/encoders.py", line 67, in default
    return tuple(item for item in obj)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/encoders.py", line 67, in <genexpr>
    return tuple(item for item in obj)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/base.py", line 91, in __iter__
    for chunk in self.chunks():
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/base.py", line 66, in chunks
    self.seek(0)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/utils.py", line 20, in <lambda>
    seek = property(lambda self: self.file.seek)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/files.py", line 41, in _get_file
    self._require_file()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/files.py", line 38, in _require_file
    raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
ValueError: The 'photo' attribute has no file associated with it.
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py”,内文第35行
响应=获取响应(请求)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/handlers/base.py”,第158行,在“get”响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/handlers/base.py”,第156行,在“get”响应中
response=response.render()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/response.py”,第106行,呈现
self.content=自渲染内容
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest\u framework/response.py”,第72行,呈现内容
ret=renderer.render(self.data、接受的媒体类型、上下文)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest\u framework/renderers.py”,第105行,在render中
allow_nan=不严格,分隔符=分隔符
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest\u-framework/utils/json.py”,第28行,转储文件
返回json.dumps(*args,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/_init__.py”,第238行,转储中
**千瓦)。编码(obj)
encode中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py”,第199行
chunks=self.iterencode(o,\u one\u shot=True)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py”,第257行,在iterencode中
返回_iterencode(o,0)
默认情况下,文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest_framework/utils/encoders.py”第67行
返回元组(对象中项目对应的项目)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest_framework/utils/encoders.py”,第67行,在
返回元组(对象中项目对应的项目)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/base.py”,第91行,在__
对于self.chunks()中的chunk:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/base.py”,第66行,分块
self.seek(0)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/utils.py”,第20行,在
seek=property(lambda self:self.file.seek)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/db/models/fields/files.py”,第41行,在get文件中
self.\u需要\u文件()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/db/models/fields/files.py”,第38行,在文件中
raise VALUERROR(““%s”属性没有与其关联的文件。”%self.field.name)
ValueError:“photo”属性没有与之关联的文件。

我通过在返回响应之前将驱动程序对象放入序列化程序来修复它,如下所示:

    if user_type == "driver":
        driver = DriverSerializer(Driver.objects.get(user=user))
        return driver.data

请发布完整的回溯。我认为这个错误与你发布的内容无关。你好!我用回溯法编辑了它为什么不使用序列化程序?这正是他们的目的。您正在绕过DRF的大部分要点。这似乎与您访问此属性的方式有关,可能在您的模板中。im将数据存储在localStorage中,因为它在客户端呈现。但就是这样,所以我不知道为什么会这样