我有一个关于电影的Django项目(带有西班牙语标题),我已经使用typeahead.js实现了自动完成功能,但它似乎只能使用某些字符串而且我不知道为什么。
例如,如果我输入" Los"有几部电影出现了,但是如果我输入了#34; El"然后没有人出现。我知道它应该有效,因为它收到的JSON有一些应该显示的结果。
以下是它使用的JavaScript和Python代码:
<script type="text/javascript">
$(document).ready(function(){
var queryMovies = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 20,
rateLimitWait: 800,
remote: {url:'/get_movie/?q=%QUERY', wildcard: '%QUERY'}
});
queryMovies.initialize();
$('#remote .typeahead').typeahead({
hint: true,
highlight: true,
minLength: 2,
},
{
name: 'queryMovies',
display: 'value',
source: queryMovies.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'No hay resultados con la consulta',
'</div>'
].join('\n'),
suggestion: function(data) {
var url = "{% url 'movie' '00000' %}"
url = url.replace('00000', data.id);
return '<div><p><a href="' + url + '">' + data.title + '</a></p></div>';
}
}
});
});
</script>
def get_movie(request):
results = []
q = request.GET['q']
movies = Movie.objects.filter(title__icontains = q)
results = [ {'id': movie.id, 'title': movie.title} for movie in movies ]
data = json.dumps(results)
return HttpResponse(data, content_type = 'application/json')
我希望有人可以提供帮助。