我正在开发一个使用 Django 的网络应用程序,它可以让用户讲述他们最喜欢的电影。对于输入,我想为用户提供一个启用了自动完成功能的文本框。
- 曾经制作的所有电影的列表非常大(18 MB),因此必须使用远程源启用自动完成功能。
- 除此之外,我还有不能使用数据库的约束。(因为我的应用程序托管在 heroku 上,并且将此类数据存储在数据库中会花费很多)
现在,我将所有电影的列表存储在一个 .py 文件中,并将其导入到我的 views.py 中。处理来自自动完成的 ajax 请求的视图会遍历此列表中的每部电影,以根据查询词进行过滤并返回过滤后的列表。
-电影.py
all_movies = [list of all movies' titles] # > 1M string elements
-views.py(每当用户更改网络应用程序文本框中的输入时,都会调用handle_autocomplete())
import movies
def handle_autocomplete(request):
data = request.GET['term']
my_list = [title for title in movies.all_movies if data in title]
return HttpResponse(simplejson.dumps(my_list))
这种方法有什么缺点,我该如何改进它?是否有任何库/ django 应用程序可以处理远程源自动完成?