Django-smart-selects在模板中不起作用

django-smart-selects doesn't work in templates

本文关键字:不起作用 Django-smart-selects      更新时间:2023-09-26

我对django-smart-selects的使用有问题。在管理面板中,django-smart-selects可以正常工作,但在模板中存在错误。

捕获的引用错误:未定义链式

$(document).ready(function() {
            chainedfk.init(chainfield, url, id, value, empty_label, auto_choose);
});

Mt 网址:

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^chaining/', include('smart_selects.urls')),
    url(r'^$', 'avtocry.views.index'),
    url(r'^/', include('advdesk.urls')),
    url(r'^createadv/', 'advdesk.views.createadv',name='createadv')
]

谪板文件

 {% extends 'base.html' %}
 {% block content %}
    <div class="wrapper">
    <form action='{% url 'createadv' %}' method="post">
        {% csrf_token %}
       {{ form }}
        <input type="submit" value="OK">
    </form>
    </div>
{% endblock %}

基本文件连接

<script src="{% static 'js/jquery-2.1.4.min.js' %}"></script>

网页输出

模板

管理

这是我解决这个问题的方法,由于我不知道的某种原因,缺少一个名为chainedfk.js的文件。经过一番挖掘,我发现这个文件存在于库文件的路径"smart-selects/admin/js/chainedfk.js"中。所以我只是简单地添加了这个导入行我的基本.html文件。

*我删除了标签,以便可以看到它。

script src="{% static 'smart-selects/admin/js/chainedfk.js' %}"

在JS导入线之后,它就像一个魅力:)

更新 -

五月 - 2017

抱歉,到目前为止

情况发生了一些变化,我的表单也拒绝加载,但它正在加载一段时间,因此您必须在 jquery 和包含 chainedfk 的标签之后包含下面的标签.js

这对于 django 1.10.5 和 Django 1.11 都非常有效 -(撰写本文时的最新版本) - Python 3.5.2

<script type="text/javascript" src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>
<script type="text/javascript" src="{% static 'smart-selects/admin/js/chainedm2m.js' %}"></script>
<script type="text/javascript" src="{% static 'smart-selects/admin/js/bindfields.js' %}"></script>

遇到了同样的问题,但没有收到任何错误。当我包括以下内容时,它也对我有用:

<script src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>

要 100% 正确,您必须按以下特定顺序导入文件:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js </script>
<!-- Smart select -->
<script src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>
<script src="{% static 'smart-selects/admin/js/chainedm2m.js' %}"></script>

通过在头部放置加载所需 javascript 的{{form.media.js}}为我工作。所以:

{% block headjavascript %}{{ form.media.js }}{% endblock %}

这是加载javascript的更好做法