間違っていました。
from django.conf import settings settings.configure()
と、settings.configure() を呼べば済む話でした。
以下ゴミ
Django とは関係ないスクリプトで
t = Template(open(template_path).read()) c = Context({}) rendered = t.render(c)
みたいにして、テンプレートレンダラだけさくっと使いたかったり
その他、Django の持つ単機能だけを使いたい時。
PYTHONPATH を気にしないといけなかったり、環境変数 DJANGO_SETTINGS_MODULE を定義しておかないと、
django.core.exceptions.ImproperlyConfigured: Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
が出ます。
本来であれば、Django のマネジメントコマンドを組んで ./manage.py hoge で起動した方が良いんでしょうが、そこまで仰々しくしたくないとか、そもそも Django プロジェクト外でやりたいとかの場合は
from unittest.mock import MagicMock from django import conf setattr(conf, 'settings', MagicMock())
こんな感じで、settings を MagicMock のインスタンスでモンキーパッチしてしまうのはどうでしょうか。
こうしておけば、その後
t = Template(open(template_path).read()) c = Context({}) rendered = t.render(c)
これも実行できます。
( Jinja2 使えばって感じではありますが )
コメント