2011-06-12 39 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);