姜戈。自动完成...它不查找搜索
Django. autocomplete... It doesn't look up the search
我是 Django 的新手,具有自动完成功能。我正在尝试使用自动完成搜索。我正在学习本教程:https://github.com/yourlabs/django-autocomplete-light/blob/master/docs/tutorial.rst
Django 没有给我任何错误。除了它实际上并不在搜索中寻找结果之外,所有的工作。相反,它给了我这个短语:"the results could not be loaded"
在 html 中,在开发人员部分它给我以下错误:
第一次访问页面时 - GET http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js net::ERR_NAME_NOT_RESOLVED
在搜索字段中键入时:jquery.min.js:2 GET http://127.0.0.1:8000/sc_site/dirdict-autocomplete/?q=ghj 500(内部服务器错误)
我不使用 get 方法,因为我正在 post 搜索数据库...我正在使用 post 方法。
我还尝试设置此代码:
进入模板 -
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
和
into the base.html-<link src="/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link src="/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/collected/autocomplete_light/select2.js"></script>
就像这个 post 中建议的那样:
但这并没有真正的帮助。我究竟做错了什么?
谢谢!
更新:
试图将自动完成文件加载到项目中...
做了以下:
在 settings.py:
STATIC_ROOT = "C:/sc_project/sc/sc_site/static"
STATIC_URL = '/static/'
之后在 cmd 中:
python manage.py collectstatic
现在我在静态文件夹中看到一堆文件:"autocomplete.init.js, forward.js, jquery.init.js, jquery.post-setup.js, select2.css, select2.js"
但是我还是看到上面的错误:(.
我为这些 jquery 文件处理了一堆代码:
在 base.html:
<head>
{% block title %}<title>СкрапОптТогрг</title>{% endblock %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<!-- Add additional CSS in static file -->
{% load static %}
<link src="/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link src="/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/collected/autocomplete_light/select2.js"></script>
<!--------------------------------------------------->
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/vendor/select2/dist/css/select2.css' %}" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
</head>
在 search.html 的模板中:
{% load static %}
<!--<script src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}" type="text/javascript"></script>-->
<!--{% include 'autocomplete_light/static.html' %}-->
{% block css %}
<!--<link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/vendor/select2/dist/css/select2.css' %}" />-->
<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
{% endblock %}
{% block content %}
<h2>Search</h2>
<form method="POST" class="form" action="" method="get">
{% csrf_token %}
{{form.as_p}}
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{form.media}}
<input type="submit" name="" value="Submit">
</form>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
<!--{{ form.media }}-->
<script>
(function($) {
$('#add-form').click(function() {
var index = $('#id_inline_test_models-TOTAL_FORMS').val()
var newTable = $('#id_inline_test_models-__prefix__-DELETE').parents('table').clone()
newTable.find(':input').each(function() {
for (attr of ['name', 'id'])
$(this).attr(
attr,
$(this).attr(attr).replace('__prefix__', index)
)
})
newTable.insertBefore($(this))
$('#id_inline_test_models-TOTAL_FORMS').val(
parseInt($('#id_inline_test_models-TOTAL_FORMS').val()) + 1
)
newTable.slideDown()
})
})($)
</script>
{% endblock %}
我确实知道这是一团糟,我打算清理并更改一些地址,因为它们显然与我的项目无关,但我有这种讨厌的感觉,它不会有帮助:(
更新
清理了静态文件的脚本和链接。一般地址都是错误的。还剩下最后一个错误。
我下载了 firebug,但我通常不知道如何处理其中的信息:
有关故障的消息:firebug-lite.js:19000 GET h
ttp://127.0.0.1:8000/sc_site/drdict-autocomplete/?q=%D0%BF%D1%80%D0%BE 500 (Internal Server Error)
message from firebug:
FieldError at /sc_site/drdict-autocomplete/
Related Field got invalid lookup: istartswith
Request Method: GET
Request URL: http://127.0.0.1:8000/sc_site/drdict-autocomplete/?q=%D0%BF%D1%80%D0%BE
Django Version: 3.0.5
Python Executable: C:\Program Files (x86)\Python38-32\python.exe
Python Version: 3.8.1
Python Path: ['C:\sc_project\sc', 'C:\Program Files (x86)\Python38-32\python38.zip', 'C:\Program Files (x86)\Python38-32\DLLs', 'C:\Program Files (x86)\Python38-32\lib', 'C:\Program Files (x86)\Python38-32', 'C:\Users\me\AppData\Roaming\Python\Python38\site-packages', 'C:\Program Files (x86)\Python38-32\lib\site-packages']
Server time: Tue, 9 Jun 2020 16:17:56 +0000
Installed Applications:
['dal',
'dal_select2',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sc_site']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\me\AppData\Roaming\Python\Python38\site-packages\dal\views.py", line 50, in dispatch
return super(ViewMixin, self).dispatch(request, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\list.py", line 142, in get
self.object_list = self.get_queryset()
File "C:\sc_project\sc\sc_site\views.py", line 129, in get_queryset
qs = qs.filter(name__istartswith=self.q)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\query.py", line 904, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\query.py", line 923, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1350, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1311, in build_filter
condition = self.build_lookup(lookups, col, value)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1156, in build_lookup
raise FieldError('Related Field got invalid lookup: {}'.format(lookup_name))
Exception Type: FieldError at /sc_site/drdict-autocomplete/
Exception Value: Related Field got invalid lookup: istartswith
Request information:
USER: E
GET:
q = 'jam'
POST: No POST data
FILES: No FILES data
COOKIES:
csrftoken = '...'
sessionid = '...'
META:
...
如果有人在正确的方向引导我,那就太好了。我浏览了很多 Whosebug 论坛,但大多没有关于自动完成的答案,或者他们对我帮助不大...
最终的解决方案是 link:
让我觉得解决起来很简单,但考虑到我对django并不完全熟悉,而且我第一次使用django的自动完成,加载外部css和脚本文件,我认为合法可能会造成混淆?
无论如何,我要离开这个线程,所以它可能会对以后的人有所帮助...此外,如果没有完成整个解决方案的工作,最终 link 将无法工作...
我是 Django 的新手,具有自动完成功能。我正在尝试使用自动完成搜索。我正在学习本教程:https://github.com/yourlabs/django-autocomplete-light/blob/master/docs/tutorial.rst
Django 没有给我任何错误。除了它实际上并不在搜索中寻找结果之外,所有的工作。相反,它给了我这个短语:"the results could not be loaded"
在 html 中,在开发人员部分它给我以下错误: 第一次访问页面时 - GET http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js net::ERR_NAME_NOT_RESOLVED
在搜索字段中键入时:jquery.min.js:2 GET http://127.0.0.1:8000/sc_site/dirdict-autocomplete/?q=ghj 500(内部服务器错误)
我不使用 get 方法,因为我正在 post 搜索数据库...我正在使用 post 方法。 我还尝试设置此代码: 进入模板 -
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
和
into the base.html-<link src="/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link src="/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/collected/autocomplete_light/select2.js"></script>
就像这个 post 中建议的那样:
更新: 试图将自动完成文件加载到项目中... 做了以下: 在 settings.py:
STATIC_ROOT = "C:/sc_project/sc/sc_site/static"
STATIC_URL = '/static/'
之后在 cmd 中:
python manage.py collectstatic
现在我在静态文件夹中看到一堆文件:"autocomplete.init.js, forward.js, jquery.init.js, jquery.post-setup.js, select2.css, select2.js"
但是我还是看到上面的错误:(.
我为这些 jquery 文件处理了一堆代码: 在 base.html:
<head>
{% block title %}<title>СкрапОптТогрг</title>{% endblock %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<!-- Add additional CSS in static file -->
{% load static %}
<link src="/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link src="/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/collected/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/collected/autocomplete_light/select2.js"></script>
<!--------------------------------------------------->
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/vendor/select2/dist/css/select2.css' %}" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
</head>
在 search.html 的模板中:
{% load static %}
<!--<script src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}" type="text/javascript"></script>-->
<!--{% include 'autocomplete_light/static.html' %}-->
{% block css %}
<!--<link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/vendor/select2/dist/css/select2.css' %}" />-->
<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
{% endblock %}
{% block content %}
<h2>Search</h2>
<form method="POST" class="form" action="" method="get">
{% csrf_token %}
{{form.as_p}}
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{form.media}}
<input type="submit" name="" value="Submit">
</form>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
<!--{{ form.media }}-->
<script>
(function($) {
$('#add-form').click(function() {
var index = $('#id_inline_test_models-TOTAL_FORMS').val()
var newTable = $('#id_inline_test_models-__prefix__-DELETE').parents('table').clone()
newTable.find(':input').each(function() {
for (attr of ['name', 'id'])
$(this).attr(
attr,
$(this).attr(attr).replace('__prefix__', index)
)
})
newTable.insertBefore($(this))
$('#id_inline_test_models-TOTAL_FORMS').val(
parseInt($('#id_inline_test_models-TOTAL_FORMS').val()) + 1
)
newTable.slideDown()
})
})($)
</script>
{% endblock %}
我确实知道这是一团糟,我打算清理并更改一些地址,因为它们显然与我的项目无关,但我有这种讨厌的感觉,它不会有帮助:(
更新 清理了静态文件的脚本和链接。一般地址都是错误的。还剩下最后一个错误。 我下载了 firebug,但我通常不知道如何处理其中的信息: 有关故障的消息:firebug-lite.js:19000 GET h
ttp://127.0.0.1:8000/sc_site/drdict-autocomplete/?q=%D0%BF%D1%80%D0%BE 500 (Internal Server Error)
message from firebug:
FieldError at /sc_site/drdict-autocomplete/
Related Field got invalid lookup: istartswith
Request Method: GET
Request URL: http://127.0.0.1:8000/sc_site/drdict-autocomplete/?q=%D0%BF%D1%80%D0%BE
Django Version: 3.0.5
Python Executable: C:\Program Files (x86)\Python38-32\python.exe
Python Version: 3.8.1
Python Path: ['C:\sc_project\sc', 'C:\Program Files (x86)\Python38-32\python38.zip', 'C:\Program Files (x86)\Python38-32\DLLs', 'C:\Program Files (x86)\Python38-32\lib', 'C:\Program Files (x86)\Python38-32', 'C:\Users\me\AppData\Roaming\Python\Python38\site-packages', 'C:\Program Files (x86)\Python38-32\lib\site-packages']
Server time: Tue, 9 Jun 2020 16:17:56 +0000
Installed Applications:
['dal',
'dal_select2',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sc_site']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\me\AppData\Roaming\Python\Python38\site-packages\dal\views.py", line 50, in dispatch
return super(ViewMixin, self).dispatch(request, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\views\generic\list.py", line 142, in get
self.object_list = self.get_queryset()
File "C:\sc_project\sc\sc_site\views.py", line 129, in get_queryset
qs = qs.filter(name__istartswith=self.q)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\query.py", line 904, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\query.py", line 923, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1350, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1311, in build_filter
condition = self.build_lookup(lookups, col, value)
File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\models\sql\query.py", line 1156, in build_lookup
raise FieldError('Related Field got invalid lookup: {}'.format(lookup_name))
Exception Type: FieldError at /sc_site/drdict-autocomplete/
Exception Value: Related Field got invalid lookup: istartswith
Request information:
USER: E
GET:
q = 'jam'
POST: No POST data
FILES: No FILES data
COOKIES:
csrftoken = '...'
sessionid = '...'
META:
...
如果有人在正确的方向引导我,那就太好了。我浏览了很多 Whosebug 论坛,但大多没有关于自动完成的答案,或者他们对我帮助不大...
最终的解决方案是 link:
让我觉得解决起来很简单,但考虑到我对django并不完全熟悉,而且我第一次使用django的自动完成,加载外部css和脚本文件,我认为合法可能会造成混淆?
无论如何,我要离开这个线程,所以它可能会对以后的人有所帮助...此外,如果没有完成整个解决方案的工作,最终 link 将无法工作...