{"title":"Djangoの設定","version":"4.0","locale":"ja","docname":"topics/settings","url":"/ja/4.0/topics/settings/","canonical":"https://djangodocs.dev/ja/4.0/topics/settings/","summary":"Djangoの設定ファイルには、インストールしたDjangoの全ての設定が含まれています。このドキュメントでは、各設定の役割と、どのような設定を利用できるか説明していき…","html":"<h1>Djangoの設定<a class=\"heading-anchor\" href=\"#django-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Djangoの設定ファイルには、インストールしたDjangoの全ての設定が含まれています。このドキュメントでは、各設定の役割と、どのような設定を利用できるか説明していきます。</p>\n<section id=\"the-basics\">\n<h2>基礎<a class=\"heading-anchor\" href=\"#the-basics\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>設定ファイルはモジュールレベルの変数が記述された、ただのPythonモジュールです。</p>\n<p>設定例を幾つか示します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>ALLOWED_HOSTS <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">&#39;www.example.com&#39;</span><span class=\"p\">]</span>\nDEBUG <span class=\"o\">=</span> <span class=\"kc\">False</span>\nDEFAULT_FROM_EMAIL <span class=\"o\">=</span> <span class=\"s1\">&#39;webmaster@example.com&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>もし <a class=\"reference internal\" href=\"/ja/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> を <code class=\"docutils literal notranslate\">False</code> にした場合、 <a class=\"reference internal\" href=\"/ja/4.0/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\">ALLOWED_HOSTS</code></a> も設定する必要があります。</p>\n</aside>\n<p>設定ファイルはPythonのモジュールなので、以下のような性質を備えています。</p>\n<ul>\n<li><p>Pythonの構文エラーになってはいけません。</p></li>\n<li><p>通常の Pythonの構文を使って、動的に値を設定する事ができます。例えば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>MY_SETTING <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"nb\">str</span><span class=\"p\">(</span>i<span class=\"p\">)</span> <span class=\"k\">for</span> i <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">30</span><span class=\"p\">)]</span>\n</code></pre></div>\n</li>\n<li><p>他の設定ファイルから値を import できます。</p></li>\n</ul>\n</section>\n<section id=\"designating-the-settings\">\n<span id=\"django-settings-module\"></span><h2>設定ファイルの指定<a class=\"heading-anchor\" href=\"#designating-the-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"std envvar\">\n<dt class=\"sig sig-object std\" id=\"envvar-DJANGO_SETTINGS_MODULE\">\n<span class=\"sig-name descname\">DJANGO_SETTINGS_MODULE</span><a class=\"heading-anchor\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>When you use Django, you have to tell it which settings you're using. Do this\nby using an environment variable, <span class=\"target\" id=\"index-0\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a>.</p>\n<p>The value of <span class=\"target\" id=\"index-1\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> should be in Python path syntax,\ne.g. <code class=\"docutils literal notranslate\">mysite.settings</code>. Note that the settings module should be on the\nPython <a class=\"reference external\" href=\"https://diveinto.org/python3/your-first-python-program.html#importsearchpath\">import search path</a>.</p>\n<section id=\"the-django-admin-utility\">\n<h3><code class=\"docutils literal notranslate\">django-admin</code> ユーティリティ<a class=\"heading-anchor\" href=\"#the-django-admin-utility\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"/ja/4.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a> を使う場合、環境変数を予め指定しておくか、ユーティリティを起動する度に設定モジュールを明示的に渡します。</p>\n<p>例 (Unix Bash シェル):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>export DJANGO_SETTINGS_MODULE<span class=\"o\">=</span>mysite<span class=\"o\">.</span>settings\ndjango<span class=\"o\">-</span>admin runserver\n</code></pre></div>\n<p>例(Windows コマンドプロンプト):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nb\">set</span> DJANGO_SETTINGS_MODULE<span class=\"o\">=</span>mysite<span class=\"o\">.</span>settings\ndjango<span class=\"o\">-</span>admin runserver\n</code></pre></div>\n<p>コマンドライン引数で設定モジュールを指定するには、 <code class=\"docutils literal notranslate\">--settings</code> を使用します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>django<span class=\"o\">-</span>admin runserver <span class=\"o\">--</span>settings<span class=\"o\">=</span>mysite<span class=\"o\">.</span>settings\n</code></pre></div>\n</section>\n<section id=\"on-the-server-mod-wsgi\">\n<h3>サーバ (<code class=\"docutils literal notranslate\">mod_wsgi</code>) の設定<a class=\"heading-anchor\" href=\"#on-the-server-mod-wsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>実際のサーバ環境では、 WSGI アプリケーションにどの設定ファイルを使うのか教えてあげる必要があります。これには <code class=\"docutils literal notranslate\">os.environ</code>:: を使います。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">os</span>\n\nos<span class=\"o\">.</span>environ<span class=\"p\">[</span><span class=\"s1\">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.settings&#39;</span>\n</code></pre></div>\n<p>さらなる情報や他のDjango WSGI アプリケーションでの共通の設定は <a class=\"reference internal\" href=\"/ja/4.0/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">Django mod_wsgi ドキュメント</span></a> を参照してください。</p>\n</section>\n</section>\n<section id=\"default-settings\">\n<h2>デフォルトの設定<a class=\"heading-anchor\" href=\"#default-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django の設定ファイルでは、特に必要のない限り設定をおこなう必要はありません。 各々の設定には注意深く決められたデフォルト値が入っています。デフォルト値は <code class=\"file docutils literal notranslate\">django/conf/global_settings.py</code> に記述されています。</p>\n<p>Django が設定をコンパイルする際には、以下のようなアルゴリズムを使います:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">global_settings.py</code> から設定を読みだす。</p></li>\n<li><p>指定された設定ファイルから設定を読み込み、グローバルな設定を必要に応じて上書きします。</p></li>\n</ul>\n<p>設定ファイルから <code class=\"docutils literal notranslate\">global_settings</code> を読み込むのは冗長なのでやらないでください。</p>\n<section id=\"seeing-which-settings-you-ve-changed\">\n<h3>設定の変更を確かめる<a class=\"heading-anchor\" href=\"#seeing-which-settings-you-ve-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The command <code class=\"docutils literal notranslate\">python manage.py diffsettings</code> displays differences between the\ncurrent settings file and Django's default settings.</p>\n<p>詳しくは <a class=\"reference internal\" href=\"/ja/4.0/ref/django-admin/#django-admin-diffsettings\"><code class=\"xref std std-djadmin docutils literal notranslate\">diffsettings</code></a> のドキュメントを参照してください。</p>\n</section>\n</section>\n<section id=\"using-settings-in-python-code\">\n<h2>Pythonのコード内で設定を参照する<a class=\"heading-anchor\" href=\"#using-settings-in-python-code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>自作のDjangoアプリケーションからは <code class=\"docutils literal notranslate\">django.conf.settings</code> をimportすることで設定を参照できます。例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n\n<span class=\"k\">if</span> settings<span class=\"o\">.</span>DEBUG<span class=\"p\">:</span>\n    <span class=\"c1\"># Do something</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">django.conf.settings</code> はモジュールではなく、ただのオブジェクトです。そのため個々の設定は別々にimportできません。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf.settings</span> <span class=\"kn\">import</span> DEBUG  <span class=\"c1\"># This won&#39;t work.</span>\n</code></pre></div>\n<p>また <code class=\"docutils literal notranslate\">global_settings</code> や自作の設定ファイルをimportしてはいけません。 <code class=\"docutils literal notranslate\">django.conf.settings</code> はデフォルト設定とサイト固有の設定を抽象化し、単一のインタフェースを提供しています。また設定を使うコードと設定ファイルの場所を分離しています。</p>\n</section>\n<section id=\"altering-settings-at-runtime\">\n<h2>実行時に設定を変更する<a class=\"heading-anchor\" href=\"#altering-settings-at-runtime\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>アプリケーションの実行中に設定を変えてはいけません。例えば、viewの中で以下の実装を行ってはいけません。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n\nsettings<span class=\"o\">.</span>DEBUG <span class=\"o\">=</span> <span class=\"kc\">True</span>   <span class=\"c1\"># Don&#39;t do this!</span>\n</code></pre></div>\n<p>設定を変えて良いのは、設定ファイルの中だけです。</p>\n</section>\n<section id=\"security\">\n<h2>セキュリティ<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Because a settings file contains sensitive information, such as the database\npassword, you should make every attempt to limit access to it. For example,\nchange its file permissions so that only you and your web server's user can\nread it. This is especially important in a shared-hosting environment.</p>\n</section>\n<section id=\"available-settings\">\n<h2>利用可能な設定<a class=\"heading-anchor\" href=\"#available-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>利用可能な設定は <a class=\"reference internal\" href=\"/ja/4.0/ref/settings/\"><span class=\"doc\">settings リファレンス</span></a> を参照してください。</p>\n</section>\n<section id=\"creating-your-own-settings\">\n<h2>設定項目を自作する<a class=\"heading-anchor\" href=\"#creating-your-own-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>There's nothing stopping you from creating your own settings, for your own\nDjango apps, but follow these guidelines:</p>\n<ul class=\"simple\">\n<li><p>Setting names must be all uppercase.</p></li>\n<li><p>既存の設定の再発明はやめましょう。</p></li>\n</ul>\n<p>設定値をシーケンスにする際は、リストを使ってください。ただしこれはDjangoの慣習です。</p>\n</section>\n<section id=\"using-settings-without-setting-django-settings-module\">\n<span id=\"settings-without-django-settings-module\"></span><h2>Using settings without setting <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a><a class=\"heading-anchor\" href=\"#using-settings-without-setting-django-settings-module\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>In some cases, you might want to bypass the <span class=\"target\" id=\"index-3\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a>\nenvironment variable. For example, if you're using the template system by\nitself, you likely don't want to have to set up an environment variable\npointing to a settings module.</p>\n<p>こういったケースのため、Djangoでは以下の関数を呼ぶことで手動で設定できるようになっています。</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.conf.settings.configure\">\n<span class=\"sig-prename descclassname\">django.conf.settings.</span><span class=\"sig-name descname\">configure</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">default_settings</em>, <em class=\"sig-param\"><span class=\"o\">**</span>settings</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.conf.settings.configure\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>実装例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n\nsettings<span class=\"o\">.</span>configure<span class=\"p\">(</span>DEBUG<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Pass <code class=\"docutils literal notranslate\">configure()</code> as many keyword arguments as you'd like, with each keyword\nargument representing a setting and its value. Each argument name should be all\nuppercase, with the same name as the settings described above. If a particular\nsetting is not passed to <code class=\"docutils literal notranslate\">configure()</code> and is needed at some later point,\nDjango will use the default setting value.</p>\n<p>Configuring Django in this fashion is mostly necessary -- and, indeed,\nrecommended -- when you're using a piece of the framework inside a larger\napplication.</p>\n<p>したがって、<code class=\"docutils literal notranslate\">settings.configure()</code> を介して設定された場合、Djangoはプロセス環境変数を変更しません (これが通常発生する理由については、<a class=\"reference internal\" href=\"/ja/4.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\">TIME_ZONE</code></a> のドキュメントを参照してください)。これらの場合、すでに環境を完全に制御していることが前提となります。</p>\n<section id=\"custom-default-settings\">\n<h3>Custom default settings<a class=\"heading-anchor\" href=\"#custom-default-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>If you'd like default values to come from somewhere other than\n<code class=\"docutils literal notranslate\">django.conf.global_settings</code>, you can pass in a module or class that\nprovides the default settings as the <code class=\"docutils literal notranslate\">default_settings</code> argument (or as the\nfirst positional argument) in the call to <code class=\"docutils literal notranslate\">configure()</code>.</p>\n<p>In this example, default settings are taken from <code class=\"docutils literal notranslate\">myapp_defaults</code>, and the\n<a class=\"reference internal\" href=\"/ja/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> setting is set to <code class=\"docutils literal notranslate\">True</code>, regardless of its value in\n<code class=\"docutils literal notranslate\">myapp_defaults</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">myapp</span> <span class=\"kn\">import</span> myapp_defaults\n\nsettings<span class=\"o\">.</span>configure<span class=\"p\">(</span>default_settings<span class=\"o\">=</span>myapp_defaults<span class=\"p\">,</span> DEBUG<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>The following example, which uses <code class=\"docutils literal notranslate\">myapp_defaults</code> as a positional argument,\nis equivalent:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>settings<span class=\"o\">.</span>configure<span class=\"p\">(</span>myapp_defaults<span class=\"p\">,</span> DEBUG<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Normally, you will not need to override the defaults in this fashion. The\nDjango defaults are sufficiently tame that you can safely use them. Be aware\nthat if you do pass in a new default module, it entirely <em>replaces</em> the Django\ndefaults, so you must specify a value for every possible setting that might be\nused in that code you are importing. Check in\n<code class=\"docutils literal notranslate\">django.conf.settings.global_settings</code> for the full list.</p>\n</section>\n<section id=\"either-configure-or-django-settings-module-is-required\">\n<h3>Either <code class=\"docutils literal notranslate\">configure()</code> or <span class=\"target\" id=\"index-4\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> is required<a class=\"heading-anchor\" href=\"#either-configure-or-django-settings-module-is-required\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>If you're not setting the <span class=\"target\" id=\"index-5\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> environment\nvariable, you <em>must</em> call <code class=\"docutils literal notranslate\">configure()</code> at some point before using any code\nthat reads settings.</p>\n<p>If you don't set <span class=\"target\" id=\"index-6\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> and don't call\n<code class=\"docutils literal notranslate\">configure()</code>, Django will raise an <code class=\"docutils literal notranslate\">ImportError</code> exception the first time\na setting is accessed.</p>\n<p>If you set <span class=\"target\" id=\"index-7\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a>, access settings values somehow,\n<em>then</em> call <code class=\"docutils literal notranslate\">configure()</code>, Django will raise a <code class=\"docutils literal notranslate\">RuntimeError</code> indicating\nthat settings have already been configured. There is a property for this\npurpose:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.conf.settings.configured\">\n<span class=\"sig-prename descclassname\">django.conf.settings.</span><span class=\"sig-name descname\">configured</span><a class=\"heading-anchor\" href=\"#django.conf.settings.configured\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"k\">if</span> <span class=\"ow\">not</span> settings<span class=\"o\">.</span>configured<span class=\"p\">:</span>\n    settings<span class=\"o\">.</span>configure<span class=\"p\">(</span>myapp_defaults<span class=\"p\">,</span> DEBUG<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Also, it's an error to call <code class=\"docutils literal notranslate\">configure()</code> more than once, or to call\n<code class=\"docutils literal notranslate\">configure()</code> after any setting has been accessed.</p>\n<p>It boils down to this: Use exactly one of either <code class=\"docutils literal notranslate\">configure()</code> or\n<span class=\"target\" id=\"index-8\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a>. Not both, and not neither.</p>\n</section>\n<section id=\"calling-django-setup-is-required-for-standalone-django-usage\">\n<h3>Calling <code class=\"docutils literal notranslate\">django.setup()</code> is required for &quot;standalone&quot; Django usage<a class=\"heading-anchor\" href=\"#calling-django-setup-is-required-for-standalone-django-usage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>If you're using components of Django &quot;standalone&quot; -- for example, writing a\nPython script which loads some Django templates and renders them, or uses the\nORM to fetch some data -- there's one more step you'll need in addition to\nconfiguring settings.</p>\n<p>After you've either set <span class=\"target\" id=\"index-9\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> or called\n<code class=\"docutils literal notranslate\">configure()</code>, you'll need to call <a class=\"reference internal\" href=\"/ja/4.0/ref/applications/#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\">django.setup()</code></a> to load your\nsettings and populate Django's application registry. For example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">django</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">myapp</span> <span class=\"kn\">import</span> myapp_defaults\n\nsettings<span class=\"o\">.</span>configure<span class=\"p\">(</span>default_settings<span class=\"o\">=</span>myapp_defaults<span class=\"p\">,</span> DEBUG<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\ndjango<span class=\"o\">.</span>setup<span class=\"p\">()</span>\n\n<span class=\"c1\"># Now this script or any imported module can use any part of Django it needs.</span>\n<span class=\"kn\">from</span> <span class=\"nn\">myapp</span> <span class=\"kn\">import</span> models\n</code></pre></div>\n<p>Note that calling <code class=\"docutils literal notranslate\">django.setup()</code> is only necessary if your code is truly\nstandalone. When invoked by your web server, or through <a class=\"reference internal\" href=\"/ja/4.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, Django will handle this for you.</p>\n<aside class=\"admonition-django-setup-may-only-be-called-once admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">django.setup()</code> may only be called once.</p>\n<p>Therefore, avoid putting reusable application logic in standalone scripts\nso that you have to import from the script elsewhere in your application.\nIf you can't avoid that, put the call to <code class=\"docutils literal notranslate\">django.setup()</code> inside an\n<code class=\"docutils literal notranslate\">if</code> block:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> <span class=\"vm\">__name__</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;__main__&#39;</span><span class=\"p\">:</span>\n    <span class=\"kn\">import</span> <span class=\"nn\">django</span>\n    django<span class=\"o\">.</span>setup<span class=\"p\">()</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">参考</p>\n<dl class=\"simple\">\n<dt><a class=\"reference internal\" href=\"/ja/4.0/ref/settings/\"><span class=\"doc\">The Settings Reference</span></a></dt><dd><p>Contains the complete list of core and contrib app settings.</p>\n</dd>\n</dl>\n</aside>\n</section>\n</section>","rootId":"django-settings","toc":[{"title":"基礎","anchor":"the-basics","children":[]},{"title":"設定ファイルの指定","anchor":"designating-the-settings","children":[{"title":"django-admin ユーティリティ","anchor":"the-django-admin-utility","children":[]},{"title":"サーバ (mod_wsgi) の設定","anchor":"on-the-server-mod-wsgi","children":[]}]},{"title":"デフォルトの設定","anchor":"default-settings","children":[{"title":"設定の変更を確かめる","anchor":"seeing-which-settings-you-ve-changed","children":[]}]},{"title":"Pythonのコード内で設定を参照する","anchor":"using-settings-in-python-code","children":[]},{"title":"実行時に設定を変更する","anchor":"altering-settings-at-runtime","children":[]},{"title":"セキュリティ","anchor":"security","children":[]},{"title":"利用可能な設定","anchor":"available-settings","children":[]},{"title":"設定項目を自作する","anchor":"creating-your-own-settings","children":[]},{"title":"Using settings without setting DJANGO_SETTINGS_MODULE","anchor":"using-settings-without-setting-django-settings-module","children":[{"title":"Custom default settings","anchor":"custom-default-settings","children":[]},{"title":"Either configure() or DJANGO_SETTINGS_MODULE is required","anchor":"either-configure-or-django-settings-module-is-required","children":[]},{"title":"Calling django.setup() is required for \"standalone\" Django usage","anchor":"calling-django-setup-is-required-for-standalone-django-usage","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Django を使う","url":"/ja/4.0/topics/"}],"prev":{"docname":"topics/serialization","title":"Django オブジェクトのシリアル化","url":"/ja/4.0/topics/serialization/"},"next":{"docname":"topics/signals","title":"Signals","url":"/ja/4.0/topics/signals/"},"formats":{"html":"/ja/4.0/topics/settings/","markdown":"/ja/4.0/topics/settings.md","json":"/ja/4.0/topics/settings.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/topics/settings.txt","official":"https://docs.djangoproject.com/ja/4.0/topics/settings/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}