Graphene Django图像字段获取绝对路径

Graphene Django image field get absolute path

我的 Django 模型中有一个图像字段,我正在尝试从 Graphene 获取图像字段输出的绝对路径。我记得使用 HttpRequest.build_absolute_uri 获取 file/image 字段的绝对 uri。所以,我决定在 Graphene Django 中使用相同的功能:

class PersonType(DjangoObjectType):
    def resolve_photo(self, info, **kwargs):
        print(info.context) # WSGIRequest
        print(info.context.build_absolute_uri(self.photo)) # Error here
        return self.photo

    class Meta:
       model = Person

因为这里的请求不是Django的HttpRequest(是WSGI Request),所以无法使用Django请求的一些实用函数

有没有一种方法可以从 WSGIRequest 创建 HttpRequest,或者有没有其他方法可以在 Graphene Django 中构建完整的 URL?在 Internet 上阅读文档、源代码或资源,我无法找到解决问题的方法。

有没有办法从 WSGIRequest.. 创建 HttpRequest?

WSGIRequest 继承自 django.http.HttpRequest 所以,你应该能够使用 Django 请求的所有 "public" 实用函数。

所以 WSGIRequest 不是你真正的问题。如果 info.context 真的是 WSGIRequest,你应该可以:

 info.context.build_absolute_uri(self.photo)

没有任何问题。

我的猜测

我必须在这里猜测,因为您没有 post 您收到的错误,问题出在 self.photo

谢谢它的工作,具体的错字是:

    def resolve_image(self, info):
        """Resolve product image absolute path"""
        if self.image:
            self.image = info.context.build_absolute_uri(self.image.url)
        return self.image