<p>您设置:</p>
<pre class="lang-py prettyprint-override"><code>STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
</code></pre>
<p>这意味着,django将在资产中找到静态文件,如png、jpg、css、js</p>
<p>但你也设定了:</p>
<pre class="lang-py prettyprint-override"><code>STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static'),
]
</code></pre>
<p>这意味着,django还将在静态中找到静态文件,如果在资产中找不到文件</p>
<p>因此,如果您确定静态文件位于其中一个文件夹中,您可以检查以下设置:</p>
<pre><code>
DEBUG = True
</code></pre>
<p>如果将调试设置为<code>False</code>,django的应用服务器将不会提供静态文件API</p>
<p><a href="https://docs.djangoproject.com/en/3.0/howto/static-files/deployment/" rel="nofollow noreferrer">Django document</a>告诉您如何部署静态文件,使用nginx,uwsgi就可以了</p>
<p>另外,您可以使用<code>serve</code>在url.py中获取它(在django.views.static中不建议使用这种方式)</p>
<pre><code>import mimetypes
import posixpath
from pathlib import Path
from django.http import (
FileResponse, Http404, HttpResponseNotModified
)
from django.conf import settings
from django.contrib import admin
from django.urls import path, re_path,include
from django.utils._os import safe_join
from django.utils.http import http_date
from django.utils.translation import gettext as _
from django.views.static import directory_index, was_modified_since
def re_serve(request, path, document_root=None, show_indexes=False):
path = posixpath.normpath(path).lstrip('/')
fullpath = Path(safe_join(document_root, path))
if fullpath.is_dir():
if show_indexes:
return directory_index(path, fullpath)
raise Http404(_("Directory indexes are not allowed here."))
if not fullpath.exists():
raise Http404(_('“%(path)s” does not exist') % {'path': fullpath})
# Respect the If-Modified-Since header.
statobj = fullpath.stat()
if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'),
statobj.st_mtime, statobj.st_size):
return HttpResponseNotModified()
content_type, encoding = mimetypes.guess_type(str(fullpath))
content_type = content_type or 'application/octet-stream'
if path.split(".")[-1] == "js":
content_type = "text/javascript" # I change it,the source code is different
response = FileResponse(fullpath.open('rb'), content_type=content_type)
response["Last-Modified"] = http_date(statobj.st_mtime)
if encoding:
response["Content-Encoding"] = encoding
return response
urlpatterns = [
path('admin/', admin.site.urls),
]
if not settings.DEBUG:
urlpatterns += [
re_path(r'^static/(?P<path>.*)$', re_serve, {'document_root': settings.STATIC_ROOT}, name='static'),
]
</code></pre>
<p>如果您确定,两个静态文件都在正确的文件夹中,并将<code>DEBUG</code>设置为<code>True</code>,可能是由于其他错误,请显示更多代码</p>