---
slug: "Djangoの機能(テンプレートレンダラ)などを使いたいけどsettingsを定義したくない時、MagicMockを変わりに使うのはどうでしょう→間違ってた"
title: "Django の機能(テンプレートレンダラ)などを使いたいけど settings を定義したくない時、MagicMockを変わりに使うのはどうでしょう → 間違ってた"
description: "\n\n\n間違っていました。"
url: "https://www.ytyng.com/blog/Djangoの機能(テンプレートレンダラ)などを使いたいけどsettingsを定義したくない時、MagicMockを変わりに使うのはどうでしょう→間違ってた"
publish_date: "2015-07-07T08:07:57Z"
created: "2015-07-07T08:07:57Z"
updated: "2026-02-27T10:43:23.308Z"
categories: ["Django"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/204cc50e69d64bdd8cb9411875c49886.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Django の機能(テンプレートレンダラ)などを使いたいけど settings を定義したくない時、MagicMockを変わりに使うのはどうでしょう → 間違ってた

<div class="document">


<p>間違っていました。</p>
<pre class="literal-block">from django.conf import settings
settings.configure()
</pre>
<p>と、settings.configure() を呼べば済む話でした。</p>
<p>以下ゴミ</p>
<hr class="docutils"/>
<p>Django とは関係ないスクリプトで</p>
<pre class="literal-block">t = Template(open(template_path).read())
c = Context({})
rendered = t.render(c)
</pre>
<p>みたいにして、テンプレートレンダラだけさくっと使いたかったり</p>
<p>その他、Django の持つ単機能だけを使いたい時。</p>
<p>PYTHONPATH を気にしないといけなかったり、環境変数 DJANGO_SETTINGS_MODULE を定義しておかないと、</p>
<p>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.</p>
<p>が出ます。</p>
<p>本来であれば、Django のマネジメントコマンドを組んで ./manage.py hoge で起動した方が良いんでしょうが、そこまで仰々しくしたくないとか、そもそも Django プロジェクト外でやりたいとかの場合は</p>
<pre class="literal-block">from unittest.mock import MagicMock
from django import conf
setattr(conf, 'settings', MagicMock())
</pre>
<p>こんな感じで、settings を MagicMock のインスタンスでモンキーパッチしてしまうのはどうでしょうか。</p>
<p>こうしておけば、その後</p>
<pre class="literal-block">t = Template(open(template_path).read())
c = Context({})
rendered = t.render(c)
</pre>
<p>これも実行できます。</p>
<p>( Jinja2 使えばって感じではありますが )</p>
</div>
