2011-06-12 40 views
0

我正处于django的学习阶段,在这样做的时候遇到了一个奇怪的错误。在Django中使用Jquery时没有反向匹配错误。如何调试?

我正在使用Jquery为注册用户列表提供前端。

我的模板看起来像这样

<html> 
<head> 
<title>Userbase</title> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <link type="text/css" rel="stylesheet" href="/media/js/autocomplete.css"> 
    <script type="text/javascript" src="/media/js/jquery-1.2.1.js"></script> 
    <script type="text/javascript" src="/media/js/dimensions.js"></script> 
    <script type="text/javascript" src="/media/js/autocomplete.js"></script> 
    {% block extra_css %}{% endblock extra_css %} 
</head> 
<script type="text/javascript" > 
$(document).ready(function() { 
    $('#searchSubmit').click(function() { 
     q = $('#q').val(); 
     $('#results').html('&nbsp;').load(
        '{% url userbase_user_search %}?q=' + q); 
    }); 
}); 

$(document).ajaxStart(function() { 
    $('#spinner').show(); 
}).ajaxStop(function() { 
    $('#spinner').hide(); 
}); 
</script> 
<label for="">Users: </label> 
<input type="text" id="UserSearchField" name="UserSearchField"> 

我的观点是这个样子

def ajax_user_search(request): 
    if request.is_ajax(): 
     q = request.GET.get('q') 
     if q is not None: 
      results = User.objects.filter(
       Q(first_name__contains = q) | 
       Q(last_name__contains = q) | 
       Q(username__contains = q)).order_by('username') 

      template = 'usersearch.html' 
      data = { 
       'results': results, 
      } 
      return render_to_response(template, data, 
       context_instance = RequestContext(request)) 

我会说实话,我接到了另一个代码库的小jQuery代码。所以在这里找到它有点问题。任何帮助将非常感激 。我所需要的是一个文本字段,当点击时(当光标出现时),给出了数据库中所有用户的下拉列表。

任何帮助将不胜感激。任何教程链接来理解jquery也会很好。

编辑:

This is my urls.py 


from django.conf import settings 
from django.conf.urls.defaults import * 
from django.contrib import admin 
from django.contrib import databrowse 
from world.views import welcome 
from openmaps.views import * 
from django.contrib.auth.views import login, logout 

admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^$', welcome), 
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^databrowse/(.*)', databrowse.site.root), 
    url(r'^static/(?P<path>. *)$', 'django.views.static.serve', { 
     'document_root': 'q:\projects\cape\static', 'show_indexes': True}), 

    url(r'^accounts/', include('registration.urls')), 
    url(r'^userbase/','userbase.views.PermLayer',name='usersearch'), 
) 

这就是它的样子了。 PermLyaer是视图的一个类。

+0

你能也显示出你的urls.py. – Pickels 2011-06-12 17:14:38

+0

已表明urls.py – IamH1kc 2011-06-12 17:20:36

回答

1
{% url userbase_user_search %} 

获取名称为userbase_user_search的网址,但您没有具有该名称的网址。

+0

如果ajax_user_search在视图中的一类,那么这个url应该映射到ajax_user_search和PermLayer上 – IamH1kc 2011-06-12 17:41:58

+0

我在这里有点困惑Ajax_User_Search和PermLayer都是视图用户库的类,我怎么在同一个模板中访问这两个类 – IamH1kc 2011-06-12 17:48:20

+1

您可以使用包含app.module.function的字符串。例如。 'userbase.views.ajax_user_search'。 – 2011-06-12 18:20:29

0

我也试图在同一个Ajax应用程序中解决这个问题。您可以简单地在您的base.html下的index.html中替换下面的代码。如果您在urls.py中使用demo_user_search中的不同名称,请将其替换为您的名称。

$('#results').html('&nbsp;').load("{% url 'demo_user_search' %}?q=" + q);

或(如果没有load()功能引号

$('#results').html('&nbsp;').load({% url 'demo_user_search' %}?q= + q);