| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Django 静的ファイルを提供する」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Django 静的ファイルを提供する== [Django][Python] ==Django1.3以降== *http://docs.djangoproject.jp/ja/latest/howto/static-files.html *大きな プロジ…」)
 
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
==Django 静的ファイルを提供する==
+
==[[Django 静的ファイルを提供する]]==
[Django][Python]
+
[[Django]] | [[Python]] |
==Django1.3以降==
+
==[[Django]]1.3以降==
 
*http://docs.djangoproject.jp/ja/latest/howto/static-files.html
 
*http://docs.djangoproject.jp/ja/latest/howto/static-files.html
 
*大きな プロジェクトで、特に複数のアプリケーションからなる場合は、各アプリケーションが 持っている静的ファイルの集まりを複数扱うことになり、ややこしくなってきます。
 
*大きな プロジェクトで、特に複数のアプリケーションからなる場合は、各アプリケーションが 持っている静的ファイルの集まりを複数扱うことになり、ややこしくなってきます。
9行目: 9行目:
 
*デフォルトでは、 INSTALLED_APPS に入っているアプリケーションの static/ サブディレクトリ
 
*デフォルトでは、 INSTALLED_APPS に入っているアプリケーションの static/ サブディレクトリ
 
*INSTALLED_APPS に django.contrib.staticfiles が入っているこ とを確認
 
*INSTALLED_APPS に django.contrib.staticfiles が入っているこ とを確認
*ローカル環境での開発 で runserver を使っているか、 staticfiles_urlpatterns を URLconf に追加し てあるなら、これでセットアップは終わりです。
+
*ローカル環境での開発 で runserver を使っているか、 staticfiles_urlpatterns を U[[R]]Lconf に追加し てあるなら、これでセットアップは終わりです。
 
*ファイルをテンプレートで使いた場合、一番簡単な方法は コンテキストプロセッサを使うことです。次のようなテンプレートを書けます
 
*ファイルをテンプレートで使いた場合、一番簡単な方法は コンテキストプロセッサを使うことです。次のようなテンプレートを書けます
  <img src="{{ STATIC_URL }}images/hi.jpg" />
+
  &lt;img src="{{ STATIC_U[[R]]L }}images/hi.jpg" /&gt;
  
 
====静的ファイルのデプロイについて====
 
====静的ファイルのデプロイについて====
 
*ローカル環境での開発が終わり、プロジェクトをデプロイする準備ができたら
 
*ローカル環境での開発が終わり、プロジェクトをデプロイする準備ができたら
=====STATIC_URL を静的なファイルを指すパブリックな URL に設定してくだ さい。 ( ほとんどの場合、デフォルト値である /static/ でうまく行きます )=====
+
=====STATIC_U[[R]]L を静的なファイルを指すパブリックな U[[R]]L に設定してくだ さい。 ( ほとんどの場合、デフォルト値である /static/ でうまく行きます )=====
=====STATIC_ROOT に、 collectstatic コマンドを使って静的な ファイルを集めたいファイルシステム上のパスを設定してください。=====
+
=====STATIC_[[R]]OOT に、 collectstatic コマンドを使って静的な ファイルを集めたいファイルシステム上のパスを設定してください。=====
 
*例えば
 
*例えば
  STATIC_ROOT = "/home/jacob/projects/mysite.com/sitestatic"
+
  STATIC_[[R]]OOT = "/home/jacob/projects/mysite.com/sitestatic"
 
=====collectstatic コマンドを実行=====
 
=====collectstatic コマンドを実行=====
 
  ./manage.py collectstatic
 
  ./manage.py collectstatic
=====STATIC_ROOT に含まれるファイルが STATIC_URL の場所で 公開されるように Web サーバを設定しデプロイ=====
+
=====STATIC_[[R]]OOT に含まれるファイルが STATIC_U[[R]]L の場所で 公開されるように Web サーバを設定しデプロイ=====
  
 
==以前の方法==
 
==以前の方法==
 
*http://docs.djangoproject.com/en/dev/howto/static-files/
 
*http://docs.djangoproject.com/en/dev/howto/static-files/
 
===基本方針===
 
===基本方針===
*セキュリティ、およびパフォーマンスの理由から、Django の静的ファイル提供機能を利用することは推奨されない。
+
*セキュリティ、およびパフォーマンスの理由から、[[Django]] の静的ファイル提供機能を利用することは推奨されない。
 
*しかしながら開発時など、必要な場合は、以下の手順にて行う
 
*しかしながら開発時など、必要な場合は、以下の手順にて行う
  
37行目: 37行目:
 
  urlpatterns = patterns('',
 
  urlpatterns = patterns('',
 
           : 略
 
           : 略
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/webroot/static/'}),
+
     (r'^static/(?P&lt;path&gt;.*)$', 'django.[[vi]]ews.static.serve', {'document_root': '/webroot/static/'}),
 
  )
 
  )
  
 
====実際のパスを設定ファイルに記述====
 
====実際のパスを設定ファイルに記述====
 
=====settings.py=====
 
=====settings.py=====
  STATIC_DOC_ROOT = '/webroot/static/'
+
  STATIC_DOC_[[R]]OOT = '/webroot/static/'
  
 
=====urls.py=====
 
=====urls.py=====
49行目: 49行目:
 
  urlpatterns = patterns('',
 
  urlpatterns = patterns('',
 
             : 略
 
             : 略
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT}),
+
     (r'^static/(?P&lt;path&gt;.*)$', 'django.[[vi]]ews.static.serve', {'document_root': settings.STATIC_DOC_ROOT}),
 
  )
 
  )
  
57行目: 57行目:
 
  urlpatterns = patterns('',
 
  urlpatterns = patterns('',
 
             : 略
 
             : 略
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}),
+
     (r'^static/(?P&lt;path&gt;.*)$', 'django.[[vi]]ews.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}),
 
  )
 
  )
  
68行目: 68行目:
 
  if settings.DEBUG:
 
  if settings.DEBUG:
 
     urlpatterns += patterns('',
 
     urlpatterns += patterns('',
         (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT}),
+
         (r'^static/(?P&lt;path&gt;.*)$', 'django.[[vi]]ews.static.serve', {'document_root': settings.STATIC_DOC_ROOT}),
 
     )
 
     )

2020年2月16日 (日) 04:24時点における最新版

Django 静的ファイルを提供する

Django | Python |

Django1.3以降

  • http://docs.djangoproject.jp/ja/latest/howto/static-files.html
  • 大きな プロジェクトで、特に複数のアプリケーションからなる場合は、各アプリケーションが 持っている静的ファイルの集まりを複数扱うことになり、ややこしくなってきます。
  • django.contrib.staticfiles はまさにそのためにあります。これは静的なファイ ルを各アプリケーションから (さらに指定した別の場所からも) 一つの場所に集め、運 用環境で公開しやすくするものです。

django.contrib.staticfiles を使う

staticfiles が見つけられる場所に静的ファイルを置く

  • デフォルトでは、 INSTALLED_APPS に入っているアプリケーションの static/ サブディレクトリ
  • INSTALLED_APPS に django.contrib.staticfiles が入っているこ とを確認
  • ローカル環境での開発 で runserver を使っているか、 staticfiles_urlpatterns を URLconf に追加し てあるなら、これでセットアップは終わりです。
  • ファイルをテンプレートで使いた場合、一番簡単な方法は コンテキストプロセッサを使うことです。次のようなテンプレートを書けます
<img src="{{ STATIC_URL }}images/hi.jpg" />

静的ファイルのデプロイについて

  • ローカル環境での開発が終わり、プロジェクトをデプロイする準備ができたら
STATIC_URL を静的なファイルを指すパブリックな URL に設定してくだ さい。 ( ほとんどの場合、デフォルト値である /static/ でうまく行きます )
STATIC_ROOT に、 collectstatic コマンドを使って静的な ファイルを集めたいファイルシステム上のパスを設定してください。
  • 例えば
STATIC_ROOT = "/home/jacob/projects/mysite.com/sitestatic"
collectstatic コマンドを実行
./manage.py collectstatic
STATIC_ROOT に含まれるファイルが STATIC_URL の場所で 公開されるように Web サーバを設定しデプロイ

以前の方法

基本方針

  • セキュリティ、およびパフォーマンスの理由から、Django の静的ファイル提供機能を利用することは推奨されない。
  • しかしながら開発時など、必要な場合は、以下の手順にて行う

手順

単純に

  • urlpatterns に以下のようなエントリーを追加
  • /webroot/static/ はファイルシステム上の実際のパス
urls.py
urlpatterns = patterns(,
          : 略
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/webroot/static/'}),
)

実際のパスを設定ファイルに記述

settings.py
STATIC_DOC_ROOT = '/webroot/static/'
urls.py
from django.conf import settings

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

ディレクトリの内容を表示

  • show_indexes : True を追加
urls.py
urlpatterns = patterns(,
           : 略
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}),
)

デバッグモードでのみ有効に

urls.py
urlpatterns = patterns(,
           : 略
)

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