Django on Heroku - Старые файлы с разбитым администратором
У меня есть приложение Django, работающее на Heroku/Cedar, настроенное в соответствии с инструкциями в https://devcenter.heroku.com/articles/django
Использование gunicorn в соответствии с инструкциями Heroku не включает в себя статические файлы, необходимые для работы администратора Django. Я могу изменить Procfile на "manage.py run_gunicorn" для локальной разработки, но это не распространяется на Heroku.
Я искал все исправления - есть ли способ включить статические файлы администратора, не бросая их на S3 с моими другими статическими файлами?
Ответы
Ответ 1
Если вы используете runerver и настраиваете свое приложение с помощью DEBUG = True, он будет обслуживать файлы администратора так же, как на вашей машине разработки. Тем не менее, это определенно не рекомендуемый способ сделать это, и я бы предложил вам разместить их на S3.
Используя приложение django-storages, очень легко настроить collectstatic для автоматического нажатия всех файлов администрирования на S3. Вы можете найти направления здесь
Ответ 2
Отправляй сообщение: http://matthewphiong.com/managing-django-static-files-on-heroku
Если это не сработает, попробуйте добавить следующее к urls.py после обычного кортежа шаблона url. Убедитесь, что у вас установлен STATIC_ROOT, и вы запустили статический статический файл в своей локальной среде, прежде чем нажимать на герою.
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
Ответ 3
просто добавьте их вместо
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
используя django 1.4.1
Ответ 4
создайте папку "static" в вашем "project_directory".
установите путь "STATIC_ROOT" в файле "settings.py", который может обслуживать ваши статические файлы администратора.
STATIC_ROOT = (os.path.join(os.path.dirname(__file__), '..', 'static'))
Добавить STATIC_ROOT в '/urls.py'
from django.conf import settings
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
Выполните следующую команду, которая скопирует все статические файлы администратора в статическую папку проекта.
python manage.py collectstatic
Теперь git добавьте, зафиксируйте и нажмите мастер героя.
Ответ 5
Кажется, немного поздно по сравнению с заданной датой. Но я попал в этот вопрос и потратил 30 минут на то, что я сделал не так. Таким образом, это волшебное решение для тех, кто может попасть в эту ловушку.
Существует некоторая проблема с Heroku django.contrib.staticfiles.urls
РЕШЕНИЕ
Вам нужно установить dj-static
(Ссылка для загрузки) на настройку Heroku.
Это утилита промежуточного программного обеспечения Django, которая позволяет правильно обслуживать статические активы от производства с помощью сервера WSGI, такого как Gunicorn.
Надеюсь, это поможет кому-то.
Ответ 6
Я получил django admin, работающий со следующими изменениями
urls.py(в конце)
import settings
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)
PROCFILE
web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT
Ответ 7
'django.contrib.staticfiles.views.serve'
вместо
'django.views.static.serve'
Ответ 8
Следуйте этому, чтобы исправить все статические связанные проблемы с Django и heroku.
В settings.py
вставьте это в конец
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR,'templates'),
)
STATIC_URL = '/static/'
Ваш шаблон для конкретного приложения должен находиться в app_name/templates/app_name/
Когда вы создаете шаблон, как вы укажете template name
in views.py
.....
return render(request,'app_name/template_name.html',context)
Для static files
поместите свои файлы здесь:
project_folder/app_name/static/app_name/css
project_folder/app_name/static/app_name/js
project_folder/app_name/static/app_name/img
для доступа к пути использования статического файла app_name/css/style_name.css
Если вы последуете этому, все ваши статические файлы будут загружаться как в героике, так и на вашей локальной машине разработки.