获取 /static/vendor/select2/dist/css/select2.css HTTP/1.1" 404 1832
GET /static/vendor/select2/dist/css/select2.css HTTP/1.1" 404 1832
我正在尝试创建一个可以根据 this doc 搜索的国家/地区下拉列表,但是几乎失望地通过谷歌搜索找到任何解决方案。
我正在使用 django-cities-light
包和 django-autocomplete-light,我需要做的就是创建一个 countries/cities 字段并将其填充到表单中并使其可搜索,
在 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 中所有可用的问题,包括 ,但没有太大帮助。你能帮我解决一下这个问题吗?
这对我来说是一个奇怪的错误。如果您正在使用 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 是否未加载两次。
我正在尝试创建一个可以根据 this doc 搜索的国家/地区下拉列表,但是几乎失望地通过谷歌搜索找到任何解决方案。
我正在使用 django-cities-light
包和 django-autocomplete-light,我需要做的就是创建一个 countries/cities 字段并将其填充到表单中并使其可搜索,
在 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 中所有可用的问题,包括
这对我来说是一个奇怪的错误。如果您正在使用 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 是否未加载两次。