17

我有一个在 Heroku/Cedar 上运行的 Django 应用程序,按照https://devcenter.heroku.com/articles/django上的说明进行配置

按照 Heroku 的说明使用 gunicorn 无法包含 Django 管理员运行所需的静态文件。我可以将 Procfile 更改为“manage.py run_gunicorn”以进行本地开发,但这并不适用于 Heroku。

我已经到处寻找解决方案 - 是否有某种方法可以包含管理静态文件,而不会将它们与我的其他静态文件一起扔到 S3 上?

4

9 回答 9

8

如果您使用 runserver 并使用 DEBUG=True 配置您的应用程序,那么它将像在您的开发机器上一样提供管理文件。但是,这绝对不是推荐的方法,我建议您将它们放在 S3 上。

使用 django-storages 应用程序很容易配置 collectstatic 以自动将所有管理文件推送到 S3。你可以在这里找到路线

于 2012-04-25T03:47:31.367 回答
8

只需添加这些

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

使用 django 1.4.1

于 2013-02-25T06:52:12.813 回答
8

看看这篇文章: http: //matthewphiong.com/managing-django-static-files-on-heroku

如果这对您不起作用,请尝试在正常的 url 模式元组之后将以下内容添加到您的 urls.py 中。确保你已经设置了 STATIC_ROOT 并且在推送到 heroku 之前你已经在本地环境中运行了 collect static 。

urlpatterns += patterns('',
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.STATIC_ROOT,
    }),
 )
于 2012-04-25T14:49:55.603 回答
6

与要求的日期相比,它似乎有点晚了。但我进入了这个问题,花了 30 分钟来解决我做错了什么。因此,对于那些可能陷入这个陷阱的人来说,这是一个神奇的解决方案。

Heroku的有一些问题django.contrib.staticfiles.urls

解决方案

您需要在 Heroku 设置上 安装dj-static下载链接)。它是一个 Django 中间件实用程序,允许使用像 Gunicorn 这样的 WSGI 服务器正确地从生产中提供静态资产。

我希望这会对某人有所帮助。

于 2014-09-16T17:45:43.053 回答
3

在“project_directory”中创建“static”文件夹。

在“settings.py”文件中设置“STATIC_ROOT”路径,该路径可以为您的管理站点的静态文件提供服务。

STATIC_ROOT = (os.path.join(os.path.dirname(__file__), '..', 'static'))

在 '/urls.py' 中添加 STATIC_ROOT

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 add、commit 和 push heroku master。

于 2014-05-25T20:00:20.977 回答
2

如果您在不使用 whitenoise(我建议)的情况下部署到 Heroku,请务必使用 dj_static https://pypi.python.org/pypi/dj-static

在过去的 3 个小时里,我试图将我的文件提供给 heroku,而 dj_static 在 2 分钟内就工作了。

于 2018-03-21T08:36:03.647 回答
1

我让 django 管理员处理以下编辑

urls.py(最后)

import settings
urlpatterns += patterns('',
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.STATIC_ROOT,
    }),
)

档案

web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT
于 2013-01-15T15:46:29.647 回答
0

'django.contrib.staticfiles.views.serve'

代替

'django.views.static.serve'

于 2013-03-31T16:56:29.103 回答
0

按照这个来修复所有与 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

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

如果你遵循这个,你所有的静态文件都会在 heroku 和你的本地开发机器中正常加载。

于 2015-07-30T16:56:40.073 回答