我正在尝试实现django-autocomplete-light tutorial之后的自动完成功能
而且我可以确认自动完成视图已成功创建,直接按如下所示键入url。
但是,当我使用窗体视图进行测试时,自动完成功能无法正常工作,并且在控制台中出现以下错误。
未捕获的ReferenceError:未定义yl
有人知道导致此问题的原因以及如何解决此问题吗?
html页面
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% crispy document_form document_form.helper %}
{% load staticfiles %}
{% block content %}
<script src="{% static 'vendor/js/select2.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'css/form.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'vendor/css/select2.css' %}" />
<h3>Upload Project</h3>
{% crispy form %}
{% endblock %}
forms.py
from django import forms
from project.models import html
from django.forms import widgets
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
from dal import autocomplete
class DocumentForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(DocumentForm,self).__init__(*args,**kwargs)
self.helper=FormHelper(self)
self.helper.form_id='projectForm'
self.helper.form_method='post'
self.helper.add_input(Submit('submit', 'Submit'))
class Meta:
model=html
fields=['project','version','diff','program','location','certificate','user','html','idf','eso']
wdigets={
'project':autocomplete.ModelSelect2(url='project:project-autocomplete')
}
class ProjectAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs=html.objects.all()
if self.q:
qs=qs.filter(project__istartswith=self.q)
return qs
答案 0 :(得分:2)
您缺少的是静态文件,而不仅仅是select2.js。您应该具备以下所有条件: CSS
<link rel="stylesheet" type="text/css" href="{% static 'vendor/select2/dist/css/select2.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/select2.css' %}">
JS
<script src="{% static 'autocomplete_light/jquery.init.js' %}"></script>
<script src="{% static 'autocomplete_light/autocomplete.init.js' %}"></script>
<script src="{% static 'vendor/select2/dist/js/select2.full.js' %}"></script>
<script src="{% static 'autocomplete_light/select2.js' %}"></script>
<script src="{% static 'autocomplete_light/forward.js' %}"></script>
<script src="{% static 'autocomplete_light/jquery.post-setup.js' %}"></script>
这是要在最后一页上显示的内容,以便自动完成工作,但是将其添加到模板的正确方法应该是在模板中包含此变量
{{form.media}}
这应该可以解决问题:-)
答案 1 :(得分:0)