我正处于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( ' ' ).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 :(得分:1)
{% url userbase_user_search %}
获取名为userbase_user_search的网址但您没有具有该名称的网址。
答案 1 :(得分:0)
我也试图在同一个ajax应用程序中解决这个问题。您只需在base.html
下的index.html中替换以下代码即可。如果您在demo_user_search
中使用urls.py
中的其他名称,请将其替换为您的姓名。
$( '#results' ).html( ' ' ).load( "{% url 'demo_user_search' %}?q=" + q );
或(load()
函数
$( '#results' ).html( ' ' ).load( {% url 'demo_user_search' %}?q= + q );