質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3551閲覧

DjangoでJinja2を使用した際のstaticディレクトリの取得方法

hnzwjun

総合スコア25

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/11/08 09:24

Djangoのデフォルトテンプレートを使用した場合

python

1{% load staticfiles %} 2<script type='text/javascript' src='{% static 'js/jquery-3.2.1.min.js' %}'/></script>

上記の様な書き方でstaticファイルのディレクトリを取得出来ましたが、
Jinja2を使用すると「load」の機能が使用出来ない様でstaticファイルのディレクトリ取得が出来ません。

views.pyでstaticファイルのディレクトリを取得してテンプレートに変数として渡すしかないのでしょうか?

また、その方法しかない場合、全てのViewにその処理を書くことになるのは避けたいのですが、何か良い方法はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

オリジナルの「context_processors」を追加する方法で解決しました。
参考サイト:オリジナルのcontext_processorを追加する

以下にソースを記述しますので同じ様な悩みを持ってる方の参考になればと思います


python

1[app/setting.py] 2 3TEMPLATES = [ 4 { 5 'BACKEND': 'django.template.backends.jinja2.Jinja2', 6 'DIRS': [os.path.join(BASE_DIR, 'templates')], 7 'APP_DIRS': True, 8 'OPTIONS': { 9 'context_processors': [ 10 'django.template.context_processors.debug', 11 'django.template.context_processors.request', 12 'django.contrib.auth.context_processors.auth', 13 'django.contrib.messages.context_processors.messages', 14 'app.context_processors.static_dir', 15 ], 16 }, 17 }, 18]

python

1[app/context_processors.py] 2 3from django.contrib.staticfiles.storage import staticfiles_storage 4 5def static_dir(request): 6 return {'static_dir': staticfiles_storage.url}

python

1[jinja2_template.html] 2 3<script type='text/javascript' src='{{static_dir('js/jquery-3.2.1.min.js')}}'/></script>

上記の記述により、同じ値を複数のviewで設定することなくstaticファイルのディレクトリが取得出来る様になりました。

投稿2017/11/10 01:20

hnzwjun

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://docs.djangoproject.com/en/1.11/topics/templates/#custom-backends

のアンカーのちょっと上、For example, you can create myproject/jinja2.py with this content の部分かなと思いました。
試してはいませんが、参考まで。

投稿2017/11/09 14:36

quickquip

総合スコア11029

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問