django collectstatic что это

Приложение staticfiles ¶

django.contrib.staticfiles собирает статические файлы из каждого из ваших приложений (и любых других мест, которые вы укажете) в одно место, которое можно легко обслуживать в продакшене.

Настройки¶

См. раздел staticfiles settings для получения подробной информации о следующих настройках:

Команды управления¶

django.contrib.staticfiles раскрывает три команды управления.

collectstatic ¶

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

Некоторые часто используемые варианты:

НЕ запрашивайте у пользователя какие-либо данные.

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

Делайте все, кроме изменения файловой системы.

Очистите существующие файлы, прежде чем пытаться скопировать или связать исходный файл.

Вместо копирования создайте символическую ссылку на каждый файл.

Для получения полного списка опций обратитесь к собственной справке команды:

Настройка списка игнорируемых шаблонов¶

Список игнорируемых шаблонов по умолчанию, [‘CVS’, ‘.*’, ‘*

findstatic ¶

Поиск одного или нескольких относительных путей с помощью включенных искателей.

Это вспомогательное средство для отладки; оно покажет вам, какой именно статический файл будет собран для данного пути.

runserver ¶

Команда добавляет эти параметры:

Хранилища¶

StaticFilesStorage ¶

ManifestStaticFilesStorage использует эту информацию для замены путей их хэшированными аналогами и соответствующего обновления кэша.

ManifestStaticFilesStorage ¶

Бэкэнд хранилища автоматически заменяет пути, найденные в сохраненных файлах, совпадающих с другими сохраненными файлами, на путь кэшированной копии (используя метод post_process() ). Регулярные выражения, используемые для поиска этих путей ( django.contrib.staticfiles.storage.HashedFilesMixin.patterns ), по умолчанию охватывают правило @import и url() оператора Cascading Style Sheets. Например, файл ‘css/styles.css’ с содержимым

Метод, который используется при создании хэшированного имени файла. Должен возвращать хэш для заданного имени файла и содержимого. По умолчанию он вычисляет хэш MD5 из фрагментов содержимого, как указано выше. Не стесняйтесь переопределить этот метод, чтобы использовать свой собственный алгоритм хэширования.

ManifestFilesMixin ¶

Модуль искателей¶

Источник

Documentation

The staticfiles app¶

django.contrib.staticfiles collects static files from each of your applications (and any other places you specify) into a single location that can easily be served in production.

Settings¶

See staticfiles settings for details on the following settings:

Management Commands¶

django.contrib.staticfiles exposes three management commands.

collectstatic ¶

Duplicate file names are by default resolved in a similar way to how template resolution works: the file that is first found in one of the specified locations will be used. If you’re confused, the findstatic command can help show you which files are found.

Some commonly used options are:

Do NOT prompt the user for input of any kind.

Ignore files, directories, or paths matching this glob-style pattern. Use multiple times to ignore more. When specifying a path, always use forward slashes, even on Windows.

Do everything except modify the filesystem.

Clear the existing files before trying to copy or link the original file.

Create a symbolic link to each file instead of copying.

Don’t call the post_process() method of the configured STATICFILES_STORAGE storage backend.

For a full list of options, refer to the commands own help by running:

Customizing the ignored pattern list¶

The default ignored pattern list, [‘CVS’, ‘.*’, ‘*

findstatic ¶

Searches for one or more relative paths with the enabled finders.

This is a debugging aid; it’ll show you exactly which static file will be collected for a given path.

runserver ¶

The command adds these options:

Storages¶

StaticFilesStorage ¶

A subclass of the FileSystemStorage storage backend that uses the STATIC_ROOT setting as the base file system location and the STATIC_URL setting respectively as the base URL.

storage.StaticFilesStorage. post_process (paths, **options

The ManifestStaticFilesStorage uses this behind the scenes to replace the paths with their hashed counterparts and update the cache appropriately.

ManifestStaticFilesStorage ¶

The purpose of this storage is to keep serving the old files in case some pages still refer to those files, e.g. because they are cached by you or a 3rd party proxy server. Additionally, it’s very helpful if you want to apply far future Expires headers to the deployed files to speed up the load time for subsequent page visits.

The storage backend automatically replaces the paths found in the saved files matching other saved files with the path of the cached copy (using the post_process() method). The regular expressions used to find those paths ( django.contrib.staticfiles.storage.HashedFilesMixin.patterns ) by default covers the @import rule and url() statement of Cascading Style Sheets. For example, the ‘css/styles.css’ file with the content

Читайте также:  что делает зеленый чай для кожи

would be replaced by calling the url() method of the ManifestStaticFilesStorage storage backend, ultimately saving a ‘css/styles.55e7cbb9ba48.css’ file with the following content:

Since static files might reference other static files that need to have their paths replaced, multiple passes of replacing paths may be needed until the file hashes converge. To prevent an infinite loop due to hashes not converging (for example, if ‘foo.css’ references ‘bar.css’ which references ‘foo.css’ ) there is a maximum number of passes before post-processing is abandoned. In cases with a large number of references, a higher number of passes might be needed. Increase the maximum number of passes by subclassing ManifestStaticFilesStorage and setting the max_post_process_passes attribute. It defaults to 5.

To enable the ManifestStaticFilesStorage you have to make sure the following requirements are met:

If a file isn’t found in the staticfiles.json manifest at runtime, a ValueError is raised. This behavior can be disabled by subclassing ManifestStaticFilesStorage and setting the manifest_strict attribute to False – nonexistent paths will remain unchanged.

storage.ManifestStaticFilesStorage. file_hash (name, content=None

The method that is used when creating the hashed name of a file. Needs to return a hash for the given file name and content. By default it calculates a MD5 hash from the content’s chunks as mentioned above. Feel free to override this method to use your own hashing algorithm.

ManifestFilesMixin ¶

Use this mixin with a custom storage to append the MD5 hash of the file’s content to the filename as ManifestStaticFilesStorage does.

Finders Module¶

staticfiles finders has a searched_locations attribute which is a list of directory paths in which the finders searched. Example usage:

Other Helpers¶

There are a few other helpers outside of the staticfiles app to work with static files:

Static file development view¶

The static files tools are mostly designed to help with getting static files successfully deployed into production. This usually means a separate, dedicated static file server, which is a lot of overhead to mess with when developing locally. Thus, the staticfiles app ships with a quick and dirty helper view that you can use to serve files locally in development.

This view function serves static files in development.

That’s because this view is grossly inefficient and probably insecure. This is only intended for local development, and should never be used in production.

To guess the served files’ content types, this view relies on the mimetypes module from the Python standard library, which itself relies on the underlying platform’s map files. If you find that this view doesn’t return proper content types for certain files, it is most likely that the platform’s map files are incorrect or need to be updated. This can be achieved, for example, by installing or updating the mailcap package on a Red Hat distribution, mime-support on a Debian distribution, or by editing the keys under HKEY_CLASSES_ROOT in the Windows registry.

This view is automatically enabled by runserver (with a DEBUG setting set to True ). To use the view with a different local development server, add the following snippet to the end of your primary URL configuration:

Note, the beginning of the pattern ( r’^static/’ ) should be your STATIC_URL setting.

Since this is a bit finicky, there’s also a helper function that’ll do this for you:

This will return the proper URL pattern for serving static files to your already defined pattern list. Use it like this:

This will inspect your STATIC_URL setting and wire up the view to serve static files accordingly. Don’t forget to set the STATICFILES_DIRS setting appropriately to let django.contrib.staticfiles know where to look for files in addition to files in app directories.

That’s because this view is grossly inefficient and probably insecure. This is only intended for local development, and should never be used in production.

Источник

документация Django 3.0

django.contrib.staticfiles собирает статические файлы со всех ваших приложений (и остальных мест, которые вы укажите) в одном месте, что позволяет легко настроить выдачу статических файлов на боевом сервере.

Настройки¶

Команды¶

django.contrib.staticfiles предоставляет три команды.

collectstatic ¶

Одинаковые имена файлов обрабатываются как и шаблоны: будет использоваться первый найденный файл. Если вы запутались, команда findstatic может показать какой конкретно файл используется.

Обычно используются следующие параметры:

Do NOT prompt the user for input of any kind.

Ignore files, directories, or paths matching this glob-style pattern. Use multiple times to ignore more. When specifying a path, always use forward slashes, even on Windows.

Path matching was added.

Выполнить все операции, кроме тех, которые изменяют файловую систему.

Удалить существующие файлы перед копированием новых.

Читайте также:  что делать если за тобой повторяет сестра

Создать симлинк для каждого файла вместо копирования.

Не вызывать метод post_process() указанного в STATICFILES_STORAGE бэкенда для работы с файлами.

“ « (по умолчанию игнорируются).

For a full list of options, refer to the commands own help by running:

Customizing the ignored pattern list¶

The default ignored pattern list, [‘CVS’, ‘.*’, ‘*

findstatic ¶

Ищет файлы по указанному относительному пути(или путях) используя активные бэкенды для поиска файлов.

Предназначена для отладки, чтобы понять какие файлы будут использоваться при сборе статики.

runserver ¶

The command adds these options:

Бэкенды¶

StaticFilesStorage ¶

The ManifestStaticFilesStorage uses this behind the scenes to replace the paths with their hashed counterparts and update the cache appropriately.

ManifestStaticFilesStorage ¶

Этот бэкенд необходим, чтобы раздавать старые версии файлов, если они все еще используются некоторыми страницами, например, если страницы кэшированы вами или прокси-сервером. Также, это полезно при большом значении заголовка Expires для статических файлов, чтобы ускорить загрузку страниц.

Since static files might reference other static files that need to have their paths replaced, multiple passes of replacing paths may be needed until the file hashes converge. To prevent an infinite loop due to hashes not converging (for example, if ‘foo.css’ references ‘bar.css’ which references ‘foo.css’ ) there is a maximum number of passes before post-processing is abandoned. In cases with a large number of references, a higher number of passes might be needed. Increase the maximum number of passes by subclassing ManifestStaticFilesStorage and setting the max_post_process_passes attribute. It defaults to 5.

If a file isn’t found in the staticfiles.json manifest at runtime, a ValueError is raised. This behavior can be disabled by subclassing ManifestStaticFilesStorage and setting the manifest_strict attribute to False – nonexistent paths will remain unchanged.

Метод, который вычисляет хеш для файла. Должен вернуть хеш названия и содержимого файла. По умолчанию вычисляет MD5 хеш содержимого файла, как описано выше. Вы можете переопределить этот метод и использовать собственный алгоритм хеширования.

CachedStaticFilesStorage ¶

Не рекомендуется, начиная с версии 2.2: CachedStaticFilesStorage is deprecated as it has some intractable problems, some of which are outlined below. Use ManifestStaticFilesStorage or a third-party cloud storage instead.

CachedStaticFilesStorage isn’t recommended – in almost all cases ManifestStaticFilesStorage is a better choice. There are several performance penalties when using CachedStaticFilesStorage since a cache miss requires hashing files at runtime. Remote file storage require several round-trips to hash a file on a cache miss, as several file accesses are required to ensure that the file hash is correct in the case of nested file paths.

ManifestFilesMixin ¶

Use this mixin with a custom storage to append the MD5 hash of the file’s content to the filename as ManifestStaticFilesStorage does.

Модуль поиска файлов¶

Дополнительные функции¶

Есть дополнительные функции вне staticfiles для работы со статическими файлами:

Представления для разработки¶

Инструменты для работой со статикой предназначены для простого развертывания на боевом сервере. Обычно это выделенный сервер, которые не практично использовать при разработке. Поэтому приложение staticfiles содержит простые представления для раздачи статики dev-сервером.

Представление, которое раздает статические файлы при разработке.

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

Это представление автоматически используется командой runserver (при DEBUG равном True ). Чтобы использовать его с другим dev-сервером, добавьте следующий код в настройки URL-ов:

Т.к. это все немного сложно, можно воспользоваться специальной функцией:

Это вернет правильный URL-шаблон для раздачи статических файлов. Используйте ее следующим образом:

Этот код будет использовать значение настройки STATIC_URL для раздачи статических файлов. Не забывайте указать STATICFILES_DIRS чтобы django.contrib.staticfiles мог найти статические файлы.

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

Специальный test case для «живого тестирования»¶

Как и родительский класс, позволяет писать тесты с использованием Selenium, PhantomJS, и др., для которых необходим доступ к статическим файлам.

Источник

Документация Django 1.6

django.contrib.staticfiles собирает статические файлы со всех ваших приложений (и остальных мест, которые вы укажите) в одном месте, что позволяет легко настроить выдачу статических файлов на боевом сервере.

Примеры использования этого приложения для работы со статикой можно найти в разделе Работа со статическими файлами (CSS, изображения). Как работать со статикой на боевом сервере описано в разделе Развертывание статических файлов.

Настройки¶

Команды¶

django.contrib.staticfiles предоставляет три команды.

collectstatic¶

Обычно используются следующие параметры:

Никогда НЕ запрашивать ввод у пользователя.

Игнорировать файлы и каталоги подходящие под шаблон. Используйте несколько раз, если необходимо передать несколько шаблонов.

Выполнить все операции, кроме тех, которые изменяют файловую систему.

Удалить существующие файлы перед копированием новых.

Создать симлинк для каждого файла вместо копирования.

’ « (по умолчанию игнорируются).

Читайте также:  признание абхазии независимости какие страны

Полный список параметров можно посмотреть выполнив:

findstatic¶

Ищет файлы по указанному относительному пути(или путях) используя активные бекенды для поиска файлов.

Предназначена для отладки, чтобы понять какие файлы будут использоваться при сборе статики.

runserver¶

Бекенды¶

StaticFilesStorage¶

CachedStaticFilesStorage¶

Этот бекенд необходим, чтобы раздавать старые версии файлов, если они все еще используются некоторыми страницами, например, если страницы кешированы вами или прокси-сервером. Также, это полезно при большом значении заголовка Expires для статических файлов, чтобы ускорить загрузку страниц.

Бекенд автоматом заменяет путя найденые в статических файлах, которые указывают на другие статические файлы, на кешированные версии (используя метод post_process() ). Регулряки, которые использутся для этого ( django.contrib.staticfiles.storage.CachedStaticFilesStorage.cached_patterns ), по умолчанию заменяют @import и url() в Cascading Style Sheets. Например, ‘css/styles.css’ содержащий

будет сохранен как ‘css/styles.55e7cbb9ba48.css’ содержащий:

Чтобы включить CachedStaticFilesStorage необходимо выполнить следующие действия:

вы собрали статические файлы командой collectstatic

Метод, который вычисляет хеш для файла. По умолчанию вычисляет MD5 хеш содержимого файла.

Шаблонные теги¶

static¶

Если вы хотите получить URL не выводя его, используйте следующий код:

Дополнительные фукнции¶

Представления для разработки¶

Инстументы для работой со статикой предназначены для простого развертывания на боевом сервере. Обычно это выделенный сервер, которые не практично использовать при разработке. По этому приложение staticfiles содержит простые представления для раздачи статики dev-сервером.

Представление, которое раздает статические файлы при разработке.

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

Т.к. это все немного сложно, можно воспользоваться специальной функцией:

Это вернет правильный URL-шаблон для раздачи статических файлов. Используйте ее следующим образом:

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

Источник

Документация Django 1.5.2

django.contrib.staticfiles собирает статические файлы со всех ваших приложений (и остальных мест, которые вы укажите) в одном месте, что позволяет легко настроить выдачу статических файлов на боевом сервере.

Примеры использования этого приложения для работы со статикой можно найти в разделе Работа со статическими файлами (CSS, изображения). Как работать со статикой на боевом сервере описано в разделе Развертывание статических файлов.

Настройки¶

Следующие настройки определяют работу приложения ’’staticfiles’’.

STATICFILES_DIRS¶

Это должен быть список или кортеж строк, которые содержат полный путь к каталогу с файлоами, например:

Префиксы (необязательны)¶

Это позволить обращаться к файлу ‘/opt/webfiles/stats/polls_20101022.tar.gz’ по URL-у ‘/static/downloads/polls_20101022.tar.gz’ в вашем шаблоне, например:

STATICFILES_STORAGE¶

По умолчанию: ‘django.contrib.staticfiles.storage.StaticFilesStorage’

STATICFILES_FINDERS¶

Список бекендов для поиска статических файлов в вашем проекте.

Бекенды для поиска файлов пока что не являются публичным интерфейсом, по этому он не задокументирован.

Команды¶

django.contrib.staticfiles предоставляет три команды.

collectstatic¶

Обычно используются следующие параметры:

Никогда НЕ запрашивать ввод у пользователя.

Игнорировать файлы и каталоги подходящие под шаблон. Используйте несколько раз, если необходимо передать несколько шаблонов.

Выполнить все операции, кроме тех, которые изменяют файловую систему.

Удалить существующие файлы перед копированием новых.

Создать симлинк для каждого файла вместо копирования.

’ « (по умолчанию игнорируются).

Полный список параметров можно посмотреть выполнив:

findstatic¶

Ищет файлы по указанному относительному пути(или путях) используя активные бекенды для поиска файлов.

Предназначена для отладки, чтобы понять какие файлы будут использоваться при сборе статики.

runserver¶

Бекенды¶

StaticFilesStorage¶

CachedStaticFilesStorage¶

Этот бекенд необходим, чтобы раздавать старые версии файлов, если они все еще используются некоторыми страницами, например, если страницы кешированы вами или прокси-сервером. Также, это полезно при большом значении заголовка Expires для статических файлов, чтобы ускорить загрузку страниц.

Бекенд автоматом заменяет путя найденые в статических файлах, которые указывают на другие статические файлы, на кешированные версии (используя метод post_process() ). Регулряки, которые использутся для этого ( django.contrib.staticfiles.storage.CachedStaticFilesStorage.cached_patterns ), по умолчанию заменяют @import и url() в Cascading Style Sheets. Например, ‘css/styles.css’ содержащий

будет сохранен как ‘css/styles.55e7cbb9ba48.css’ содержащий:

Чтобы включить CachedStaticFilesStorage необходимо выполнить следующие действия:

вы собрали статические файлы командой collectstatic

Метод, который вычисляет хеш для файла. По умолчанию вычисляет MD5 хеш содержимого файла.

Шаблонные теги¶

static¶

Если вы хотите получить URL не выводя его, используйте следующий код:

Дополнительные фукнции¶

Представления для разработки¶

Инстументы для работой со статикой предназначены для простого развертывания на боевом сервере. Обычно это выделенный сервер, которые не практично использовать при разработке. По этому приложение staticfiles содержит простые представления для раздачи статики dev-сервером.

Представление, которое раздает статические файлы при разработке.

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

Т.к. это все немного сложно, можно воспользоваться специальной функцией:

Это вернет правильный URL-шаблон для раздачи статических файлов. Используйте ее следующим образом:

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

Источник

Сказочный портал