我已经在Heroku上建立了Django网站https://www.wasjournalistenverdienen.de/,现在一切正常。但是我有一个问题。
此网站上的自动完成功能基于JS中的easyautocomplete插件和位于我的Django结构的静态/文件夹中的德语发布者名称的预定义JSON文件。
这个想法是,只要有人输入的名称与JSON的预定义键都不匹配,就会将此新名称推入JSON,并且下次有人开始键入此名称时,自动完成功能也会建议使用此新选项。当我在本地检查Django时,此方法工作正常。但是问题是Heroku太复杂了,JSON的任何更改都没有保存。我试图通过IndexView更新JSON并将更改存储在heroku上,但是似乎未保存更新的JSON。我还尝试过使用AWS作为一种解决方法,在那里更改JSON,但是问题是自动完成功能无法加载JSON,因为它来自另一台服务器。
有人在如何通过heroku上的views.py创建至少临时文件以及如何在JS中引用它们方面有经验吗?
以下是在indexview中创建更新的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)