我正在尝试实现以下自动完成功能 django-autocomplete-light tutorial
我可以确认自动完成 View 已成功创建,直接输入 url,如下所示。
但是,当我使用表单 View 进行测试时,自动完成功能不起作用并在控制台中出现以下错误。
Uncaught ReferenceError: yl is not defined
有谁知道是什么原因导致这个问题以及如何解决这个问题?
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
最佳答案
您缺少静态文件,而不仅仅是 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 }}
这应该可以解决问题:-)
关于django - DAL-yl 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51136584/