如何使用 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')**
我正在尝试将我的网站从 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')**