【问题标题】:Django Ajax Search does not retern anythingDjango Ajax 搜索不返回任何内容
【发布时间】:2015-01-26 12:23:25
【问题描述】:

我已经实现了关注这个视频,但我什么也没得到https://www.youtube.com/watch?v=jKSNciGr8kY

这些是我的代码 在我的模板中,我尝试在主 html 文件中包含 java 脚本

    <h3>SEARCH</h3>
    {% csrf_token %}
    <input type="text" id="search" name="search">
    <ul id="search-result">

    </ul>

    <script type="text/javascript"
            src="http://code.jquery.com/jquery-2.0.0.min.js">
    </script>

    <script>
        $(function(){
            $('#search').keyup(function(){
                $.ajax({
                    type: "POST",
                    url: "/projects/search/",
                    data:{
                        'search_text':$('#search').val(),
                        'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
                    },
                    success: searchSuccess,
                    dataType:'html'
                });
            });
        });
        function searchSuccess(data,textStatus,jqXHR)
        {
            $('#search-results'.html(data));
        }

    </script>

项目模型.py

class projects(models.Model):

    project_name = models.CharField(verbose_name=" ", max_length=250, blank=True, null=True)
    description = models.CharField(verbose_name=" ", max_length=500, blank=True, null=True)
    create_date = models.DateField(verbose_name='', auto_now_add=True, null=True, blank=True,
    help_text="")
    start_date = models.DateField(verbose_name='', null=True, blank=True,
    help_text="")
    end_date   = models.DateField(verbose_name='', null=True, blank=True,help_text="")
    url = models.CharField(max_length=50)
    user = models.ManyToManyField(User)

    def __unicode__(self):
         return u"%s" % (self.project_name)

url.py

url(r'^search/$',search_titles),

项目 app 中的 view.py 和 ajax_search.html 与 main html 位于同一目录中

def search_titles(request):
    if request.method == "POST":
        search_text = request.POST['search_text']
    else:
        search_text = ''
    pros = projects.objects.filter(id=search_text)
    return render_to_response('front/ajax_search.html',{'pros':pros})

ajax_search.html

{% if pros.count>0 %}
{% for pro in pros %}
    <li>
        {{ pro.project_name }}
   </li>

{% endfor %}
{% else %}
 <li>
    NO!!
 </li>
{% endif %}

【问题讨论】:

    标签: jquery ajax django search


    【解决方案1】:

    ajax_search.html 模板中存在语法错误。您应该在&lt; 周围添加空格:

    {% if pros.count > 0 %}
    

    但无论如何,这个模板不是很 djangoish。考虑使用for ... empty 语法:

    {% for pro in pros %}
        <li>{{ pro.project_name }}</li>
    {% empty %}
        <li>NO!!</li>
    {% endfor %}
    

    编辑:这行是什么意思?

    pros = projects.objects.filter(id=search_text)
    

    我怀疑你想搜索id。将其更改为:

    pros = projects.objects.filter(project_name=search_text)
    

    甚至:

    pros = projects.objects.filter(project_name__icontains=search_text)
    

    【讨论】:

    • 按照你的建议,输出还是没有
    • 我很怀疑 ajax 是行不通的,或者我实现了一些错误。
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多