-1

私の質問: static、media、collectstatic のナンセンスをすべて無視して、css、img、および js ファイルを通常どおりにリンクすることはできますか?

例として管理ファイルを取り上げます。テンプレートをプロジェクトのテンプレート フォルダーにコピーして編集しました。十分に単純ですが、CSSを変更したいときは...ああ、少年。css ファイルをリンクできません。このテンプレートが見つけようとしている css だけが私の django ソースにあります...それを何か (href="/assets/css/admin.css" など) に変更しても、見つかりません。私は settings.py ファイルとその静的なものを編集しようとしました。これは明らかにうまくいきませんでした。

助けてください: 次の構造を持ち、ファイルを正常にリンクできるようにするには、settings.py に正確に何を書き込む必要がありますか?

計画

- - サイト

----テンプレート

--------管理者

- - - - サイト

----資産

--------画像

--------CSS

--------JS

前もって感謝します!

4

3 に答える 3

1

Surviving django.contrib.staticfilesからの抜粋(または、django で静的ファイルを管理する方法) :

静的ファイルをオーバーライドする方法

をオーバーライドしたいと想像してください/static_url/admin/css/base.css。あなたがしなければならない最初のことは、その場所を見つけることです:

>>> ./manage.py findstatic admin/css/base.css
Found 'admin/css/base.css' here:
  /home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css

/srv/project/static_dir/次に、追加したにコピーしますsettings.STATICFILES_DIRS(前の段落を参照)。たとえば、次のようになります。

mkdir -p /srv/project/static_dir/admin/css/
cp /home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css /srv/project/static_dir/admin/css

コピーは にあります /srv/project/static_dir/admin/css/base.css。のデフォルトの順序により、 collectstatic/srv/project/static_dir/よりも優先され ます。django/contrib/admin/staticsettings.STATICFILES_FINDERS

したがって、元の代わりにオーバーライドのコピーになりcollectstaticます /srv/project/static_url/admin/css/base.css/srv/project/static_dir/admin/css/base.cssdjango/contrib/admin/static/admin/css/base.css

どこ:

  • /static_url/STATIC_URL
  • /srv/project/static_root/STATIC_ROOT
  • /srv/project/static_dir/にリストされているディレクトリですSTATICFILES_DIRS

また、デプロイ時に collectstatic を実行する必要があります。

はい、この記事を書いたのは、完全なドキュメントではなく、最も一般的なユースケースのみをカバーする短い記事を読みたいという多くの人に役立つと思うからです。締め切り。

お役に立てれば。

于 2012-08-28T12:27:46.347 に答える
0

開発環境では、これらのファイルを Django 経由で提供できます ( django.contrib.staticfiles )。本番環境では、Apache などの Web サーバーを介して静的ファイルを簡単に提供できます (静的ファイル ディレクトリのエイリアスを構成できます)。

于 2012-08-28T11:44:44.170 に答える
0

はい、静的、メディアなどの組み込みの機械はすべて無視できますDjango。ただし、一度操作すると非常に便利です。

ただし、それを無視してアセット フォルダー内のアセットを提供する場合は、考慮すべき 2 つの別個の環境があります:developmentproduction.

開発中は、Djangorunserver に静的アセットの場所を伝えるだけで提供させることができます。関数を使用してこれを行う例については、こちらのドキュメントを参照してください。Django serve()

/assets/実稼働環境では、URLパスで始まるすべてのディレクトリを検索するようにサーバーを構成するだけです。

于 2012-08-28T11:45:47.430 に答える