Подтвердить что ты не робот

Django on Heroku - Старые файлы с разбитым администратором

У меня есть приложение Django, работающее на Heroku/Cedar, настроенное в соответствии с инструкциями в https://devcenter.heroku.com/articles/django

Использование gunicorn в соответствии с инструкциями Heroku не включает в себя статические файлы, необходимые для работы администратора Django. Я могу изменить Procfile на "manage.py run_gunicorn" для локальной разработки, но это не распространяется на Heroku.

Я искал все исправления - есть ли способ включить статические файлы администратора, не бросая их на S3 с моими другими статическими файлами?

4b9b3361

Ответ 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

Если вы последуете этому, все ваши статические файлы будут загружаться как в героике, так и на вашей локальной машине разработки.