当前位置: 首页 > 面试题库 >

Heroku-在Django应用中处理静态文件

邹毅
2023-03-14
问题内容

我在heroku中有一个项目(myapp),但无法使静态文件正常工作。

我的Procfile样子是这样的:

web: python myapp/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT myapp/settings.py

settings.py:

...

STATIC_ROOT = os.path.join(PROJECT_PATH, 'staticfiles')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

STATICFILES_DIRS = (
    # I have the static folder inside my app and not inside the project
    os.path.join(PROJECT_PATH, 'cesar/static'),
)

...

重新启动时heroku restart,将heroku logs显示以下内容:

...
Copying ...

114 static files copied to '/app/myapp/staticfiles'.
...

但是当我这样做时,我heroku run ls -l myapp/看不到该staticfiles文件夹:

-rw------- 1 u5605 5605    0 Jan 28 16:53 __init__.py
drwx------ 4 u5605 5605 4096 Jan 28 16:53 cesar
-rw------- 1 u5605 5605  503 Jan 28 16:53 manage.py
-rw------- 1 u5605 5605 6292 Jan 28 16:53 settings.py
drwx------ 2 u5605 5605 4096 Jan 28 16:53 templates
-rw------- 1 u5605 5605  257 Jan 28 16:53 urls.py
-rw------- 1 u5605 5605  286 Jan 28 16:53 views.py

问题答案:

我找到了解决方案。这是我最初的myapp/urls.py

from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
from django.conf import settings


admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', include('myapp.cesar.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

我将这些行添加到原始myapp/urls.py文件的末尾:

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

现在一切正常。我希望这也可以帮助其他人



 类似资料:
  • django.contrib.staticfiles 从你的应用(和其他你指定的地方)收集所有静态文件到同一个地方,这样产品就能很容易的被维护 看看这里 对于静态文件的应用和一些用法示例的介绍,请参阅管理静态文件(CSS,图像) . 如果你想知道如何部署静态文件, 请参阅 部署静态文件. 设置 查看staticfiles settings了解更多设置细节 STATIC_ROOT STATIC_UR

  • 前面我们介绍了如何输出静态页面,但是我们的网页往往包含了很多的静态文件,包括图片、JS、CSS 等,刚才创建的应用里面就创建了如下目录: ├── static │ ├── css │ ├── img │ └── js beego 默认注册了 static 目录为静态处理的目录,注册样式:URL 前缀和映射的目录(在/main.go文件中beego.Run()之

  • 我在静态类中存储游戏的纹理。它们从管理器加载到此类的静态数组中。 每个屏幕都有一个dispose方法,但我应该在纹理上的何处调用dispose。libGDX是否只在应用程序退出时处理,因此我应该在每个屏幕中处理纹理?

  • 问题内容: 我无法显示我的静态文件。我尝试了各种设置和目录配置等,但是它们只是显示为404。我已经安装了debug_toolbar,所以知道STATIC_URL正在到达我的请求上下文。 显示/ static的目录结构(我还将目录和用户放置在餐应用文件夹中,只是为了尝试一下。 Settings.py(一些重要的设置,尽管我已经尝试了其他各种设置): 在base.html中呈现 问题答案: 这是dja

  • 问题内容: 让我感谢Stack Overflow社区的人们帮助我解决了各种Django和Apache(带有mod_wsgi)错误。到目前为止,我已经问了5个相关的问题,现在我越来越接近在生产站点上发布内容了! 我读到有关,(很快就会过时),并在Apache配置中设置。我试图逐个测试每个解决方案,但是我什么也做不了。 这是我的管理网站现在的样子 我也有一个奇怪的情况,那就是 任何子 域都可以在我的服

  • 问题内容: 从主题上类似标题的数量来看,这似乎引起了很多混乱,但是尝试使用django开发服务器尝试在静态文件中可以找到的所有内容,我几乎放弃了希望! 因此,我的静态文件从C:/ Users / Dan / seminarWebsite / static /提供,其中我有用于图像,css等的子文件夹。 设置: 静态文件应用程序也处于活动状态。 网址: 模板: 但是,只有一个断开的链接出现在此地址处