django 1.11和jQuery自动完成功能无法正常工作

时间:2017-06-29 06:16:36

标签: jquery python ajax django autocomplete

我有一个表单字段,其输入为基因名称。它在我的模型数据库gene_names中搜索基因名称字段。当用户输入名称时,我需要自动完成。我被建议使用jQuery。我搜索并找到以下链接

  1. http://flaviusim.com/blog/AJAX-Autocomplete-Search-with-Django-and-jQuery/

    2. How to suggest similar words in autocomplete

  2. 和其他人也......  基于它们我写了下面的代码。它没有给出任何错误,但它不起作用。

    models.py

    class GeneList(models.Model):
    gene_name = models.CharField(max_length=10)
    

    例如。文件上传到数据库 Screenshot of txt file with gene names

    base.html中的

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" type="text/css" media="all" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">
    </script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
    

    在模板文件呈现表单中

    <form method="POST">
        {% csrf_token %}
        <h4>Gene Name &nbsp {{ form.gene_p }}</h4>
        <button type="submit">After giving gene name Click here!</button>
    </form>
    ...
    ...<div class="ui-widget">
     <label for="genes">Gene: </label>
     <input id="id_gene_p"> <!-- id_gene_p because thats what inspect element 
       shows 
      id for Gene name form field -->
    </div>
    
    <script type="text/javascript">
       $(document).ready(function(){
        var gene_input=$('input[id="id_gene_p"]');
        gene_input.autocomplete({
          source: "/filesapp/api/get_gene_names/",
          minLength: 2
        });
      } );
    

    id_gene_p因为那是检查元素显示基因名称表单字段的ID

    投放urls.py

    from filesapp import views
    urlpatterns = [
    ...
    ...
    url(r'^api/get_gene_names/', views.get_gene_names, name='get_genes'),
    ]
    

    views.py

    from filesapp.forms import FileForm
    from filesapp.models import GeneList
    import csv
    import json
    ...
    def load_genes(file_path):
        #"this loads gene from file with gene name"
        reader = csv.DictReader(open(file_path))
        for row in reader:
            gene = GeneList.objects.create(gene_name=row[0])
            gene.save()
    
    def get_gene_names(request):
    
        all_gene_names = GeneList.objects.all()
    
        if request.is_ajax():
            q = request.GET.get('term', '')
    
            gene_names = [g['good_name'] for g in all_gene_names if q in g["input_name"]]
            gene_names = set(gene_names) #removing duplicates
    
            results = []
            for gn in gene_names:
                gn_json = {'value': gn}
                results.append(gn_json)
            data = json.dumps(results)
        else:
            data = 'fail'
        mimetype = 'application/json'
        return HttpResponse(data, mimetype)
    

    我的forms.py文件在大多数讨论中没有被讨论

    from filesapp.models import GeneList
    class FileForm(forms.ModelForm):
    gene_p = forms.CharField(widget=forms.TextInput(
            attrs = { 'class': 'form-control',
                    'placeholder': 'Write the name of gene manipulated in above 
                     sample pairs. eg. Wnt',
    
            }
        ))
    

    请等待任何建议。 或者你看到的任何错误。 让我知道是否有任何其他更简单的方法是可能的,因为我是新手,因此没有太多的背景。 如果您需要更多信息来解决此问题,请告诉我们。 感谢。

    它不起作用。我尝试了所有的建议,没有效果。

0 个答案:

没有答案