【问题标题】:GET /static/vendor/select2/dist/css/select2.css HTTP/1.1" 404 1832GET /static/vendor/select2/dist/css/select2.css HTTP/1.1" 404 1832
【发布时间】:2020-12-28 23:45:57
【问题描述】:

我正在尝试创建一个可以基于this doc 搜索的国家/地区下拉列表,但几乎对通过谷歌搜索找到任何解决方案感到失望。

我正在使用 django-cities-light 包和 django-autocomplete-light,我需要做的就是创建一个国家/城市字段并将其填充到表单中并使其可搜索,

在 setting.py 和已安装的应用程序中:

INSTALLED_APPS = [
    'dal',
    'dal_select2',
    'app.apps.MyownAppConfig',
    'users.apps.UsersConfig',
    'crispy_forms',
    'tinymce',
    'cities_light',
    'django.contrib.admin',
    'django.contrib.auth',
    ...
  ]

在models.py中:

from tinymce.models import HTMLField
from cities_light.models import Country
class Post(models.Model):
     ...
     descript = HTMLField(blank=True, null=True)
     location = models.ForeignKey(Country, blank=True, null=True, on_delete=models.CASCADE)
     def __str__(self):
        return self.title


    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})

在views.py中:

class CountryAutocomplete(LoginRequiredMixin, autocomplete.Select2QuerySetView):
    def get_queryset(self):
        if not self.request.user.is_authenticated:
            return Country.objects.none()

        qs = Country.objects.all()

        if self.q:
            qs = qs.filter(name__icontains=self.q)

        return qs

在forms.py中:

class postform(forms.ModelForm):

    class Meta:
        model = Post
        
        fields ='__all__'
        
        
        exclude = ['date_published']

        widgets = {
            'location': autocomplete.ModelSelect2(url='country-autocomplete' , attrs={'data-placeholder': 'select location...', 'data-minimum-input-length': 4})
        }

        search_fields = ['name']

在 postform.html 中:

{% extends "app/base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block content %}
    <main>
     <form id="dropdownForm" method="POST" action="" enctype="multipart/form-data">
            <fieldset class="form-group">
                {% csrf_token %}
                <div class="content-section">
                    
                    {{ form.descript }}
                    <label>location</label>
                    {{ form.location }}

                </div>
          </fieldset>
      </form>
   </main>
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>

{{ form.media }}
{% endblock content %}

在 url.py 中:

urlpatterns = [path('country-autocomplete/', CountryAutocomplete.as_view(model=Country), name='country-autocomplete')]

但我得到的是:

此外,在终端我看到这个消息:

"GET /static/vendor/select2/dist/css/select2.css HTTP/1.1" 404 1832

我还查看了 SO 中的所有可用问题,包括 this one,但没有太大帮助。你能帮我解决这个问题吗?

【问题讨论】:

  • 下拉:由&lt;select&gt;标签呈现的UI元素; Dropbox:一种商业文件共享云服务。

标签: python autocomplete django-3.1


【解决方案1】:

这对我来说是一个奇怪的错误。如果您使用的是venv,请尝试删除django-autocomplete-light 文件夹并再次将其替换为new,然后检查是否仍然出现相同的错误!同样在你的base.html 文件中,确保.js 链接是有序的,因为额外的脚本可能会加载到预览的顶部,所以开发人员应该注意它们。它应该是这样的:

<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"</script>
<link href="{% static '/autocomplete_light/select2.css' %}" type="text/css" media="all" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

尝试使用 webkit 检查器检查 jquery 是否没有加载两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 2020-03-03
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多