Как я могу обновить json-файл со структурой Django / Heroku? - PullRequest
0 голосов
/ 12 октября 2018

Я создал веб-сайт Django https://www.wasjournalistenverdienen.de/ на Heroku, и все идет хорошо.Но у меня есть одна проблема.

Автозаполнение на этом веб-сайте основано на плагине easyautocomplete в JS и предопределенном JSON-файле имен немецких издателей, который находится в статической / -папке моей Django-структуры.

Идея состоит в том, что всякий раз, когда кто-то вводит имя, которое не соответствует предопределенным ключам JSON, это новое имя помещается в JSON, и в следующий раз, когда кто-то начинает вводить это имя, автозаполнение также предлагает это новоевариант.Это прекрасно работает, когда я проверяю мой Django локально.Но проблема в том, что Heroku является эфермальным и что любые изменения в JSON не сохраняются.Я пытался обновить JSON через IndexView и сохранить изменения на heroku, но обновленный JSON, похоже, не сохраняется.Я также попытался использовать AWS в качестве обходного пути, изменив там JSON, но затем возникает проблема, заключающаяся в том, что автозаполнение не может загрузить JSON, поскольку оно приходит с другого сервера.

Кто-нибудь имел опыт создания хотя бы временных файлов черезviews.py на героку, а как же ссылаться на них в JS?

Вот код, который создает обновленный JSON в просмотре индекса:

entriesno = DataCollection.objects.count()
    model=Medium
    mediumno=Medium.objects.values("mediumname").distinct().count()
    with io.open('honoradar/static/honoradar/mediumsname.json', "r") as json_file:
        oldjsondata = json.load(json_file)
        all_db_entries=Medium.objects.values("mediumname").distinct()
        for entry in all_db_entries:
            mediumname=(entry["mediumname"])
            newentry={"name":mediumname.title(),"code":mediumname.title()}
            oldjsondata.append(newentry)
        seen = set()
        new_l = []
        for d in oldjsondata:
            t = tuple(d.items())
            if t not in seen:
                seen.add(t)
                new_l.append(d)
        with io.open('tmp/mediumsname_temporary.json', 'w+') as outfile:
                        data=json.dumps(new_l, ensure_ascii=False)
                        outfile.write(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...