未定义DAL-yl

时间:2018-07-02 12:46:14

标签: django django-autocomplete-light

我正在尝试实现django-autocomplete-light tutorial之后的自动完成功能
而且我可以确认自动完成视图已成功创建,直接按如下所示键入url。
但是,当我使用窗体视图进行测试时,自动完成功能无法正常工作,并且在控制台中出现以下错误。

  

未捕获的ReferenceError:未定义yl

有人知道导致此问题的原因以及如何解决此问题吗?

enter image description here

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

2 个答案:

答案 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)

我尝试并生成了您可能会收到的错误(图片):

Uncaught RefernceError

我认为您需要像这样在模板中添加对媒体的引用:

{{ context_name.media }}

希望它有助于解决问题。