python - 自动完成什么都不做。怎么了?
问题描述
我有不起作用的自动完成代码。
我有输入字段类坐标,当我输入代码时,它会从我的数据库中找到与 geo_code 匹配的值,从而找到输入代码国家。
因此,当我键入UK
它 时,它与geo_code
最后一个匹配,country
所以在这种情况下,英国是我键入的代码,它可以在 geo_code 中找到,国家是英国。该代码有效,我想要实现的是在打字时带来自动完成功能以提供建议。举些例子:
UK United Kingdom
USA United States of America
到目前为止我做了什么:
在models.py中我有:
class Coordinate(models.Model):
code = models.CharField(max_length=150)
class Profiles(models.Model):
geocode=models.CharField(max_length=200)
country=models.CharField(max_length=500)
city=models.CharField(max_length=500)
class Meta:
managed=False
db_table='profiles_country'
def __str__(self):
return '{}'.format(self.geocode)
在forms.py中:
from dal import autocomplete
class CoordinateForm(forms.ModelForm):
code= forms.CharField(max_length=150, label='',widget= forms.TextInput)
class Meta:
model = Coordinate
fields = ('__all__')
widgets = {
'code': autocomplete.ModelSelect2(url='coordinate-autocomplete')}
在view.py中:
class CoordinateAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if not self.request.user.is_authenticated():
return Profiles.objects.none()
qs = Profiles.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
在base.html中
<!DOCTYPE html>
{% load static %}
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="{% static 'geoproj/css/main.css' %}">
</head>
<body>
<div>{% block content %}{% endblock %}
{% block javascripts %} {% endblock %} </div>
</body>
</html>
在geo.html中:
{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
<form enctype="multipart/form-data" method="POST" >
{% csrf_token %}
{{ form}}
{{form.media }}
<button class = "btn btn-primary" type="submit">OK</button></form>
{% endif %}
{% endblock content %}
{% block javascripts %} {% endblock %}
感谢您帮助解决此案。
解决方案
我没有看到链接 URL 响应和 HTML 模板的 js。在这里我将如何解决它。前提是您的观点有效。您将通过以下方式生成建议
- 首先创建一个js事件监听器从表单的输入框获取文本
- 收到此文本后,您将对您提到的视图 URL 进行 ajax 调用
- 获得 ajax 结果后,您将创建一个 for 循环并为输入生成选择标签。
这就是我编写 js 代码以与 Html 模板和 Django 自动完成视图 URL 通信的方式。
推荐阅读
- python - 使用 subprocess.check_output() 时出现 OSError 异常“[Errno 2] 没有这样的文件或目录”
- webpack - 无法在 Webpack 中输出动态 SCSS 入口点
- tfs - 无法在 Windows 服务器机器(tfs 代理)中正确构建电子包
- java - 在 Maven 存储库中使用已安装的 java 版本
- sql - Postgres 9.1 在 Amazon redshift 中的 concat_ws 等效项
- r - R:使用多行使用 ggplot 绘图
- java - Java生成的密码不适用于LDIF文件
- laravel - 是否可以使用 laravel 刀片文件作为变量?
- c++ - 对于 Boost.Propertytree,有没有办法使用 JSON 点表示法来引用数组元素?
- php - 从 Laravel 中的模型动态创建路由