Как использовать файлы в Django 2.2 для разбора yaml? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь обновить свой сайт с Django 1.11 до Django 2.2, и у меня возникают проблемы с загрузкой и анализом файлов yaml.

Сообщение об ошибке:

ScannerError: здесь не разрешены значения отображения в "", строка 1, столбец 34: b '--- \ n recipeVersion: 9 \ n имя: значение \ n' ^

I'mполучение содержимого файла с использованием ModelForm с виджетом, определенным как:

'source': AsTextFileInput()

... используя ...

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

... и затем я получаю исходную переменную для анализаwith:

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

Из этого сообщения об ошибке выше видно, что мои символы новой строки экранированы, поэтому yaml видит текст в одной строке. Я попытался зарегистрировать источник этого файла, и вот как это показано в моем файле журнала:

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

Итак, как я могу получить содержимое этого файла без (как мне кажется) экранированных символов новой строки, чтобы я мог разобрать его как yaml?

Редактировать: мой код и yaml (упрощенно для этого вопроса) не изменились;обновление проектов Python нарушило синтаксический анализ.

1 Ответ

0 голосов
/ 21 октября 2019

Расшифровка исправленной строки:

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