代码之家  ›  专栏  ›  技术社区  ›  Deesha

python 2到python 3 futurize builtins str

  •  0
  • Deesha  · 技术社区  · 6 年前

    我正在使用Futurize将django应用程序从python 2转换为python。 我目前正在展望未来。在以下测试代码集中:

    response = str(self.client.get(self.url))
    

    我得到以下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3261: ordinal not in range(128) 测试失败了

    但是,当我删除以下导入时:

    from builtins import str
    

    测试通过了。我尝试使用decode()函数,但得到了相同的错误。 我哪里会出错?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mitchell Walls    6 年前

    您不想从响应中选择一组特定的内容吗?例如。除此之外,我认为这不一定是个好主意。

    response = self.client.get(self.url)
    if response.is_client_error() or response.is_server_error():
        # do failure
    else:
        content = response.content
        # check content
    

    如果您想将其转换为字符串,我不建议这样做,但可能有一个良好的兼容性。

    response = self.client.get(self.url).__repr__() 
    # or "even less recommended reason being is it will fail for eval()"
    response = self.client.get(self.url).__str__()