标签: collectstatic

Django的收藏有什么意义?

这可能是一个愚蠢的问题,但它并没有点击我的脑袋.

在Django中,惯例是将您的应用程序特有的所有静态文件(即css,js)放入名为static的文件夹中.所以结构看起来像这样:

mysite/
    manage.py
    mysite/ --> (settings.py, etc)
    myapp/ --> (models.py, views.py, etc)
        static/
Run Code Online (Sandbox Code Playgroud)

在mysite/settings.py我有:

STATIC_ROOT = 'staticfiles'
Run Code Online (Sandbox Code Playgroud)

所以当我运行命令时:

python manage.py collectstatic   
Run Code Online (Sandbox Code Playgroud)

它在根级别创建一个名为staticfiles的文件夹(与myapp /目录相同)

这有什么意义?是不是只创建了我所有静态文件的副本?

python django static-files django-staticfiles collectstatic

69
推荐指数
4
解决办法
3万
查看次数

将Django应用程序部署到Heroku时出现Collectstatic错误

我正在尝试将一个Django应用程序部署到Heroku,它开始构建,下载和安装所有内容,但这就是我在收集静态文件时所获得的

$ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 10, in <module>
remote:            execute_from_command_line(sys.argv)
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
remote:            utility.execute()
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
remote:            self.fetch_command(subcommand).run_from_argv(self.argv)
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv
remote:            self.execute(*args, **cmd_options)
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
remote:            output = self.handle(*args, **options)
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle
remote:            collected = self.collect()
remote:          File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
remote: …
Run Code Online (Sandbox Code Playgroud)

python deployment django heroku collectstatic

28
推荐指数
8
解决办法
3万
查看次数

Django collectstatic没有这样的文件或目录

在django 1.7中,collectstatic为我抛出一个例外:

OSError: [Errno 2] No such file or directory: '/static'
Run Code Online (Sandbox Code Playgroud)

我已经执行了很多collectstatic调用,一切正常,但今天有这个问题.

settings.py

BASE_DIR = os.path.dirname(os.path.realpath(__file__))
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'fxblog',
    'rest_framework',
)

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, STATIC_URL.strip("/"))

STATICFILES_DIRS = (
    '/static/',
    '/upload/',
)
Run Code Online (Sandbox Code Playgroud)

BASE_DIR是正确的,检查它.目录BASE_DIR/static/exists以及我的所有静态文件.

追溯:

Traceback (most recent call last):
  File "../manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File …
Run Code Online (Sandbox Code Playgroud)

python django collectstatic

12
推荐指数
2
解决办法
9567
查看次数

使用Django的collectstatic与boto S3一段时间后抛出"错误32:破管"

我正在使用boto和S3存储我的Django站点的静态文件.当使用该collectstatic命令时,它会在停止文件并投掷之前完美地上传大量文件."Error 32: Broken Pipe."当我尝试再次运行该命令时,它会跳过它已经上传的文件并从它停止的文件开始,之前没有上传任何新内容就抛出相同的错误.

python django amazon-s3 boto collectstatic

12
推荐指数
1
解决办法
1571
查看次数

在服务器上运行 collectstatic :AttributeError: 'PosixPath' 对象没有属性 'startswith'

使用 nginx、gunicorn、django 和 virtualenv 在数字海洋上的服务器上部署后,我尝试使用 collectstatic:

python manage.py collectstatic --settings=config.settings.production
Run Code Online (Sandbox Code Playgroud)

如您所见,我有多个设置文件。一份基地,一份本地和一份生产设置文件。下面是错误:

    Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 173, in handle
    if self.is_local_storage() and self.storage.location:
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/utils/functional.py", line 239, in inner
    return func(self._wrapped, *args)
  File "/home/tony/vp/vpenv/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__ …
Run Code Online (Sandbox Code Playgroud)

python django nginx gunicorn collectstatic

8
推荐指数
2
解决办法
1万
查看次数

Django collectstatic 不适用于 S3 生产,但相同的设置在本地工作

我一直在移动一些设置来制作更明确的本地和生产环境,我一定是搞砸了。

以下是大部分相关设置。如果我将 production.py 设置(目前只包含与 AWS 相关的设置)移动到 base.py,我可以从我的本地机器更新 S3 就好了。同样,如果我将这些 AWS 设置保留在 base.py 中并推送到生产环境,S3 会相应地更新。另外,如果我从 production.py 打印一些东西,它会打印。但是,如果我在 manage.py 上将 production.py 设为我的“本地”设置,或者当我使用如下所示的设置推送到 Heroku 时,S3 不会更新。

我的设置不正确怎么办?(嗯,我确定一些事情,但特别是导致 S3 不更新?)

这是一些相关的代码:

__init__.py (在包含 base、local 和 production 的目录中)

from cobev.settings.base import *

Run Code Online (Sandbox Code Playgroud)

base.py

INSTALLED_APPS = [
    ...
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    ...
    'storages',
]

...

STATIC_URL = '/static/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, "global_static"),
                    os.path.join(BASE_DIR, "media", )
                    ]

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

Run Code Online (Sandbox Code Playgroud)

local.py

# local_settings.py
from .base import *

...

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Run Code Online (Sandbox Code Playgroud)

production.py

from …
Run Code Online (Sandbox Code Playgroud)

python django amazon-s3 amazon-web-services collectstatic

7
推荐指数
1
解决办法
1757
查看次数

Django 静态与用户上传的文件

在阅读了大量文档后,我仍然没有很好地掌握到底什么是静态文件与用户上传的文件......或者静态文件到底是什么。

1.静态文件

Django静态文件描述为“图像、javascript、css”之类的东西。好的,有道理。但是所有那些 .py 文件和 .html 模板文件等等……它们不是静态的??当站点运行时,它们不会“改变”。究竟什么是静态文件?“提供静态文件”是什么意思?这与“提供”“views.py”文件或“home.html”文件有何不同?

最重要的是,为什么我什至需要“collectstatic”?为什么我所有的静态文件都需要在一个地方?我想如果你使用一个单独的网络服务器来“服务”它们,那是有道理的......仍然,不确定这到底是什么意思。

另外,无论如何,“collectstatic”去哪里找到所有假定的静态文件?它会检查我的所有代码并查看我访问图像/javascript 文件的位置吗?

2. 用户上传的文件

假设我只是从表面上看这个静态的东西,如果用户上传图片会发生什么?我是否需要一个在后台不断运行“collectstatic”的程序?

Django媒体文件描述为管理用户上传内容的一种方式。老实说我还没有尝试过这个(现在会这样做),但这仍然代表一个问题:如果将所有“静态”文件放在一个地方如此重要,为什么突然可以不对用户这样做 -上传的文件?

这个“MEDIA_ROOT”目录中的文件不是由“collectstatic”收集的吗?如果我只是把我所有的图像/javascript/css 放到这个媒体文件夹中怎么办?然后什么都不收集?有什么问题吗?

感谢任何人对此的见解。

django static collectstatic

6
推荐指数
1
解决办法
1859
查看次数

collectstatic 不会推送到文件 S3

编辑:

我发现import django_heroku从我的 settings.py 文件中删除允许我将我的静态文件推送到我的 AWS 存储桶。当我取消注释时import django_herokucollectstatic然后将我的文件推送到staticfiles文件夹。

manage.py collectstatic#import django_heroku

您已请求在设置中指定的目标位置收集静态文件。

maange.py collectstaticimport django_heroku

您已请求在设置中指定的目标位置收集静态文件:/path/to/project/staticfiles

我不知道这是为什么或如何解决它。现在的问题是:如何在 Heroku 上为我的 django 应用程序运行 collectstatic?还是我需要用 nostatic 运行我的 heroku 实例?(例如runserver --nostatic

问题:

每当我运行时,我python manage.py collectstatic所有的静态文件都被放置到本地的“staticfiles”文件夹中。STATICFILES_STORAGE = myapp.aws.utils.StaticRootS3Boto3Storage但是我已经设置了文件总是转到“myapp/staticfiles”。

设置.py:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_FILE_EXPIRE = 200
AWS_PRELOAD_METADATA = True
AWS_QUERYSTRING_AUTH = True

DEFAULT_FILE_STORAGE = 'myapp.aws.utils.MediaRootS3Boto3Storage'
STATICFILES_STORAGE = 'myapp.aws.utils.StaticRootS3Boto3Storage'
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME') …
Run Code Online (Sandbox Code Playgroud)

django heroku amazon-s3 django-staticfiles collectstatic

6
推荐指数
1
解决办法
1305
查看次数

使用dokku部署Django应用程序时出现Collectstatic配置错误

使用dokku部署Django应用程序时出现以下错误

Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput
Run Code Online (Sandbox Code Playgroud)

我发现无法运行heroku run python ./manage.py collectstatic --noinputdokku容器,但是当我尝试时dokku run my app python ./manage.py collectstatic --noinput,静态文件已成功复制到该STATIC_ROOT文件夹,并且没有给出错误消息.

我可以通过将collectstatic命令放入Procfile以下内容来解决问题:

web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi
Run Code Online (Sandbox Code Playgroud)

不过,我很想知道导致问题的原因以及如何进行调试.有任何想法吗?

python django heroku collectstatic dokku

5
推荐指数
1
解决办法
4027
查看次数

Django媒体文件在生产时没有显示Debug = False - Django 1.10

我目前有两种文件静态文件和媒体文件.静态文件包含我的css,js和其他静态内容.媒体文件包含用户上传的内容.静态文件夹就在媒体文件夹旁边.现在在我部署的计算机上.如果我设置DEBUG = False我的静态文件很好,但我的媒体内容永远不会显示.我收到一个404 not found错误.我的问题是当DEBUG = False时如何在生产环境中显示媒体内容.有了DEBUG = True,一切似乎都运行正常吗?我阅读了以下页面并尝试了这些内容.

1-Tried为静态媒体创建一个单独的文件夹,就像静态内容一样. 目前,我的静态内容由collectstatic命令管理.我在webfaction上使用apache.我有一个静态文件夹,static_content当我./manage.py collectstatic在静态文件夹中运行我的所有内容时被static_content调用复制到该文件夹.我尝试创建另一个名为的静态文件夹static_media.但是,当我运行./manage.py collectstatic我的media文件夹的内容被复制到,static_content而不是static_media它应该有.谁能告诉我为什么collectstatic命令没有粘贴内容static_media呢?

这就是我的配置

ALLOWED_HOSTS = [
   "*",
   'mywebsite.com',
   'www.mywebsite.com.com',
]


STATIC_URL = 'http://mywebsite.com.com/static/'
STATIC_ROOT = '/home/admin/webapps/static_content'
STATICFILES_DIRS = (
                        '/home/admin/webapps/mainfolder/mainapp/static',
                        '/home/admin/webapps/mainfolder/mainapp/media',
                   )
PROJECT_PATH = os.path.join(BASE_DIR, 'static')

MEDIA_URL = 'http://mywebsite.com.com/media/'
MEDIA_ROOT = '/home/admin/webapps/static_media' 
Run Code Online (Sandbox Code Playgroud)

这就是我的urls.py看起来像

admin.autodiscover()
urlpatterns = [
....
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

我是否正在使用正确的方法创建一个单独的文件夹来管理我的媒体内容,就像DEBUG = …

media django static collectstatic

5
推荐指数
4
解决办法
5967
查看次数