Файл Django stati c находится в конфликте с React Router - PullRequest
1 голос
/ 20 января 2020

Мой сайт использует Django в качестве бэкэнда и React. js в качестве внешнего интерфейса. Фронтенд скомпилирован со сборкой реагирующих скриптов, так что бэкэнд Django может использовать его как файлы c. Когда я запускаю веб-приложение с помощью python manage.py runserver ', я сталкиваюсь со следующей проблемой:

Веб-сайт просто находит для root url' http:localhost: 8000 / '. Тем не менее, если я хочу go для suburl 'http://localhost: 8000 / team / '. Backend не может загрузить все stati c файлы . Журнал из бэкэнда выглядит следующим образом:

[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 автоматически добавляет «/ team /» перед «/ static /», поэтому все файлы, изначально находящиеся в «/ 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')

Кто-нибудь знает, есть ли способ избавиться от префикса '/ team /', к которому автоматически добавляется Django?

1 Ответ

0 голосов
/ 21 января 2020

вместо того, чтобы пытаться изменить способ обработки файлов * stati c, чтобы избежать конфликтов со статической реакцией, вы можете просто назвать маршрут Django stati c files как нечто отличное от static, назвать его Например, staticfiles, т. Е. STATIC_URL = '/staticfiles/'.

. Вам также не нужно менять имя папки, поэтому STATIC_ROOT = os.path.join(BASE_DIR, 'static') будет работать должным образом, а позже попытайтесь перенаправить маршрут /staticfiles с помощью * 1012. * к вашей папке * stati c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...