我的网站使用 Django 作为后端,使用 React.js 作为前端。前端使用 react-scripts build 编译,以便 Django 后端可以将其作为静态文件使用。使用“python manage.py runserver”运行 Web 应用程序时,我面临以下问题:
该网站只为根 url 'http:localhost:8000/' 提供服务。但是,如果我想转到子 URL ' http://localhost:8000/team/ '。后端无法加载所有静态文件。来自后端的日志如下所示:
[20/Jan/2020 20:23:43] "GET /team/static/media/%E8%82%96%E8%8A%B7%E7%8E%A5.93cb5dfd.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E6%9D%8E%E4%B8%80%E5%87%A1.e74fa446.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E9%83%87%E5%AE%87%E6%AC%A3.af12f28b.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E9%AB%98%E8%AF%97%E5%85%83.ff52ce19.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E8%83%A1%E6%B7%87%E5%AA%9B.88f0c659.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E7%8E%8B%E9%80%B8%E5%87%A1.4fe694ba.jpg HTTP/1.1" 200 3137
[20/Jan/2020 20:23:43] "GET /team/static/media/%E8%B4%BA%E9%80%B8%E6%83%9F.e77dedac.jpg HTTP/1.1" 200 3137
Django 会自动在 '/static/' 前面附加 '/team/',因此无法找到和呈现最初位于 '/static/' 中的所有文件。这非常棘手,我在网上找不到任何解决方案。
这是我的 urls.py:
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
from .views import index
urlpatterns = [
path('', index, name='index'),
re_path(r'^.*$', index),
]
在哪里
index = never_cache(TemplateView.as_view(template_name='index.html'))
我的 settings.py 如下所示:
STATIC_ROOT = os.path.join(BASE_DIR, 'build', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'build/static')
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'build', 'media')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'STATIC_ROOT = os.path.join(BASE_DIR, 'build', 'static')
有谁知道是否有办法摆脱 Django 自动附加的“/team/”前缀?