django - DAL-yl 未定义

标签 django django-autocomplete-light

我正在尝试实现以下自动完成功能 django-autocomplete-light tutorial
我可以确认自动完成 View 已成功创建,直接输入 url,如下所示。
但是,当我使用表单 View 进行测试时,自动完成功能不起作用并在控制台中出现以下错误。

Uncaught ReferenceError: yl is not defined

有谁知道是什么原因导致这个问题以及如何解决这个问题?

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

最佳答案

您缺少静态文件,而不仅仅是 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/

相关文章:

python - Django-Autocomplete-Light v3 小部件不起作用

python - Django-autocomplete-url 无效 URL

javascript - 以编程方式选择 django-autocomplete-light 中的第一个建议

jquery - 在 Django : Problems with loading jquery with multiple plugins - or: How to load jQuery only once?

python - django orm 和 3 个关系

python - Django 与 IronPython 和 VS2010?

Django - 在发布请求后重新加载模板

javascript - 在 UpdateView Django 中保存 ImageField

django - Bitnami Django 创建多个项目

python - Django-Autocomplete-light 小部件未显示