Как обслуживать Stati c Файлы папок в теге скрипта - Django - PullRequest
0 голосов
/ 19 июня 2020

Я создаю проект, в котором я создаю файлы динамически и сохраняю их в папке staticfiles

Но когда я обращаюсь к этому файлу, он показывает файл в браузере

http://localhost:8000/static/rest_framework/css/bootstrap.min.css

Но когда я пытаюсь получить доступ к файлу, который я создал и сохранил в staticfiles/bot_js

http://localhost:8000/static/bot_js/cfe96a9a-dc84-4127-9b00-0411b7b3288e.js

Он показывает Page not Found

Я хочу, чтобы этот файл размещался на моем веб-сайте в качестве файла сценария для другого веб-сайта, например,

<script src="http://localhost:8000/static/bot_js/cfe96a9a-dc84-4127-9b00-0411b7b3288e.js"></script>

Но он дает мне Page not found (404). Как я могу использовать этот файл для другого веб-сайта.

settings.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'

# Add these new lines
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, '../frontend/build/static/'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Добавьте ниже в свой settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Теперь go в свой проект urls.py и добавьте следующие urlpatterns:

urlpatterns = [
    ...
    url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}), 
    url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
    ]

Наконец добавьте эту строку под urlpatterns:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

PS> Если вы хотите обслуживать файлы stati c в продакшене и использовать empheral server в качестве heroku, вам потребуется установить whitenoise и настроить его для обслуживания, что не рекомендуется, поскольку это влияет на производительность веб-сайта

0 голосов
/ 19 июня 2020

в производственном режиме вы должны использовать эти настройки

STATIC_URL = 'https://YOUR_URL/static/'
STATIC_ROOT = 'static/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...