使用Jquery与Django时没有反向匹配错误。怎么调试?

时间:2011-06-12 17:02:38

标签: jquery django

我正处于django的学习阶段,并且遇到了一个奇怪的错误。

我正在使用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是视图的一个类。

2 个答案:

答案 0 :(得分:1)

{% url userbase_user_search %}

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

答案 1 :(得分:0)

我也试图在同一个ajax应用程序中解决这个问题。您只需在base.html下的index.html中替换以下代码即可。如果您在demo_user_search中使用urls.py中的其他名称,请将其替换为您的姓名。

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

或(load()函数

中没有引号

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