Заполните шаблон django файлами - PullRequest
0 голосов
/ 26 сентября 2018

Django может удобно заполнять шаблон HTML данными из моделей в базе данных, но недавно я столкнулся с несколькими сценариями, в которых я хотел бы заполнить шаблон данными других файлов .
В этом случае я пытаюсь создать собственную документацию для проекта.Первоначально я просто записал все это в один большой файл, но это, очевидно, утомительно и довольно часто повторяется.Вместо этого мне было бы неплохо иметь какую-то файловую систему, где каждая папка является разделом документации, а каждая подпапка - подразделом и т. Д. И т. Д.

Может ли Django сделать это?

Я знаю, что один из способов сделать это - связать файлы с объектами базы данных, а затем перебрать эти объекты в шаблоне.Я не заинтересован в этом, потому что я хочу, чтобы любые изменения / новые файлы документации немедленно отображались на странице, без необходимости редактировать в БД.

Единственный другой подход, который я могу придумать, - это перемещаться по папкам, добавляя их содержимое в контекст страницы при загрузке страницы.Мне кажется, это слишком глупо и создаст проблемы с закодированным HTML в содержимом файла.

Это, как говорится, если есть элегантный способ сделать любой из этих, или совершенно другой подход, я все уши.
Приветствия


КстатиДля этого я не использую синтаксис уценки - просто чистый HTML для страниц документации.

1 Ответ

0 голосов
/ 27 сентября 2018

Представление не должно возвращать объекты из базы данных.Он может возвращать любую структуру данных Python, независимо от того, откуда они взялись:

def my_view(request):
    context = {}
    with open('foo.txt', 'r') as f:
         lines = []
         for line in f:
            # do some file processing or something
            lines.append(line)
         context['foobar'] = lines
    return TemplateResponse(request, 'my_template.html', context) 

Контекст шаблона будет иметь список строк из foo.txt, и вы сможете перебирать его, какэто был любой другой объект Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...