Django-compressor: рдЬрдм рдбреАрдмрдЧ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рддреЛ Django рд╕рдВрдкреАрдбрд╝рд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд▓рд╛ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рджрд┐рд╕ре░ 2012  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: django-compressor/django-compressor

рддреЛ рдореБрдЭреЗ рдбрд┐рдмрдЧ = рдлрд╛рд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ django-compressor рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдбреАрдмрдЧ = рдЯреНрд░реВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ django-compressor рд╕рд╣реА рдпреВрдЖрд░рдПрд▓, рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд╕рдмрдХреБрдЫ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Django рд╕реНрд╡рдпрдВ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП 404 рджреЗрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")

рдФрд░ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ static_media рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдВрдкреНрд░реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ CACHE/css/bfdeac875f7a.css рдлрд╝рд╛рдЗрд▓ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдЙрддреНрдкрдиреНрди HTML рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░, рдореИрдВ рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ

<link rel="stylesheet" href="/static/CACHE/css/bfdeac875f7a.css" type="text/css" />

рд▓реЗрдХрд┐рди рдЬрдм рдкреЗрдЬ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рд░рдирд░рд╡рд░ рдХрд╣рддрд╛ рд╣реИ:

[21/Dec/2012 22:28:44] "GET /static/CACHE/css/bfdeac875f7a.css HTTP/1.1" 404 276

рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ? рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ

  • 'django.core.context_processors.static', рдХреЛ TEMPLATE_CONTEXT_PROCESSORS рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
  • 'compressor.finders.CompressorFinder', рдХреЛ STATICFILES_FINDERS рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
  • рдЬреЛрдбрд╝рд╛ 'compressor', рд╕реЗ INSTALLED_APPS

рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдЪреВрдХ рдЧрдпрд╛ рдерд╛: рдореИрдВрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдЬрдм DEBUG _True_ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рдереАред

рд╡реИрд╕реЗ рднреАред рдЬрдм DEBUG = False, рдЖрдкрдХрд╛ рд░рдирд░рд╡рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред DEBUG рдХреЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдареАрдХ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рдирд░рд╡рд░ рдХреЛ --insecure рдлреНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬ: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ-рд╡рд┐рдХрд▓реНрдк --- рдЕрд╕реБрд░рдХреНрд╖рд┐рдд

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ,

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдкрдХреЗ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдЖрдкрдХреА COMPRESS_* рд╕реЗрдЯрд┐рдВрдЧ, STATIC_URL рд╕реЗрдЯрд┐рдВрдЧ, STATICFILES_* рд╕реЗрдЯрд┐рдВрдЧ
  • рдХреНрдпрд╛ рдЖрдкрдХреЗ INSTALLED_APPS рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рд╣реИрдВ?
  • Django рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ?
  • рдХреНрдпрд╛ рдЕрдиреНрдп рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ? рдЖрдк рдЙрдирдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирд░рд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛?

рдзрдиреНрдпрд╡рд╛рдж

рдирдорд╕реНрддреЗ,

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде Django 1.4.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

...

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR, "static"),
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
    'compressor.finders.CompressorFinder',
)

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/x-scss', 'sass --scss {infile} {outfile}'),
)

...

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    ...
    'compressor',
    ...
)

...

рдЬрд┐рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ static_media рднреАрддрд░ рд░рдЦрд╛ рд╣реИ, рд╡реЗ /static/ url рд╕реЗ рднреА рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ ... рдореИрдВрдиреЗ Django 1.3 рд╕реЗ рднреА рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛, рдЕрдЧрд░ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХреВрдмрдбрд╝ рд╣реЛрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рд╛рде рд╣реА, рдЬрдм рдбреАрдмрдЧ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ рддреЛ рд░рдирд░рд╡рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореЗрд░реЗ static_media рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ...

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдЪреВрдХ рдЧрдпрд╛ рдерд╛: рдореИрдВрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдЬрдм DEBUG _True_ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рдереАред

рд╡реИрд╕реЗ рднреАред рдЬрдм DEBUG = False, рдЖрдкрдХрд╛ рд░рдирд░рд╡рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред DEBUG рдХреЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕реНрдЯреИрдЯрд┐рдХрдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдареАрдХ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рдирд░рд╡рд░ рдХреЛ --insecure рдлреНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬ: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ-рд╡рд┐рдХрд▓реНрдк --- рдЕрд╕реБрд░рдХреНрд╖рд┐рдд

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

рд╣реЗ рднрдЧрд╡рд╛рди, рдореЗрд░рд╛ рдмреБрд░рд╛ред рдореИрдВрдиреЗ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдкреНрд░рд╢реНрди рдореЗрдВ "рд╕рддреНрдп" рдФрд░ "рдЧрд▓рдд" рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!

рдФрд░ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dasloss picture dasloss  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bobort picture bobort  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

badbye picture badbye  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jvc26 picture jvc26  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

polmuz picture polmuz  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ