如何使用 Django 2.2 中的文件进行 yaml 解析?

How do I consume files in Django 2.2 for yaml parsing?

我正在尝试将我的网站从 Django 1.11 升级到 Django 2.2,但我在上传和解析 yaml 文件时遇到了问题。

错误信息是:

ScannerError : mapping values are not allowed here in "", line 1, column 34: b'---\n recipeVersion: 9\n name: value\n' ^

我正在使用 ModelForm 获取文件内容,小部件定义为:

'source': AsTextFileInput()

...使用...

class AsTextFileInput(forms.widgets.FileInput):
    def value_from_datadict(self, data, files, name):
        return files.get(name).read()

... 然后我获取要解析的源变量:

cleaned_data = super(RecipeForm, self).clean()
source = cleaned_data.get("source")

从上面的错误消息来看,我的换行符似乎被转义了,所以 yaml 看到所有文本都在一行上。我尝试记录此文件的来源,这是它在我的日志文件中的显示方式:

DEBUG b'---\n recipeVersion: 9\n name: value\n'

那么,我如何在没有(在我看来是这样的)转义换行符的情况下获取此文件内容,以便我可以将其解析为 yaml?

编辑:我的代码和 yaml(针对这个问题进行了简化)没有改变;升级 Python 个项目破坏了解析。

解码字节串修复了它:

class AsTextFileInput(forms.widgets.FileInput):
    def value_from_datadict(self, data, files, name):
        return files.get(name).read().**decode('utf-8')**