{"title":"ビューを記述する","version":"2.0","locale":"ja","docname":"topics/http/views","url":"/ja/2.0/topics/http/views/","canonical":"https://djangodocs.dev/ja/2.0/topics/http/views/","summary":"ビュー関数、つまり view は、単にWeb リクエストを受け取って Web レスポンスを返すPython 関数です。 このレスポンスは、WebページのHTMLコンテンツ、リダイレクトや404エラー、またはXMLドキュメントやイメージ、その他何にでもなり得ます…","html":"<h1>ビューを記述する<a class=\"heading-anchor\" href=\"#writing-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>ビュー関数、つまり <em>view</em> は、単にWeb リクエストを受け取って Web レスポンスを返すPython 関数です。 このレスポンスは、WebページのHTMLコンテンツ、リダイレクトや404エラー、またはXMLドキュメントやイメージ、その他何にでもなり得ます (本当にそうなんです)。ビュー自体には、このレスポンスを返すために必要な、任意の論理が含まれます。 このコードは、Python パス上にあればどこでも好きな場所に置くことができます。それ以外の要件はありません -- つまり &quot;魔法&quot; はないのです。 コードを <em>どこかに</em> 置くために、慣習ではプロジェクトやアプリケーションのディレクトリに置かれた <code class=\"docutils literal notranslate\"><span class=\"pre\">views.py</span></code> というファイルにビューを記述します。</p>\n<section id=\"a-simple-view\">\n<h2>シンプルなビュー<a class=\"heading-anchor\" href=\"#a-simple-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>以下は、HTML ドキュメントとして、現在の日付と時刻を返すビューです:</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=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">current_datetime</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">now</span> <span class=\"o\">=</span> <span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n    <span class=\"n\">html</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;&lt;html&gt;&lt;body&gt;It is now </span><span class=\"si\">%s</span><span class=\"s2\">.&lt;/body&gt;&lt;/html&gt;&quot;</span> <span class=\"o\">%</span> <span class=\"n\">now</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">html</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>1 行ずつコードを見ていきましょう:</p>\n<ul>\n<li><p>最初に、Python の <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code> ライブラリ とともに、クラス <a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> を <a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.http</span></code></a> モジュールからインポートします。</p></li>\n<li><p>次に、<code class=\"docutils literal notranslate\"><span class=\"pre\">current_datetime</span></code> という関数を定義します。これがビュー関数です。それぞれのビュー関数は、<a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> のオブジェクトを第 1 引数として受け取り、一般的には <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> と名付けられます。</p>\n<p>ビュー関数の名前は重要ではありません; Django が識別するために特別な方法で名前を付ける必要はありません。ここでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">current_datetime</span></code> という名前はその機能を的確に表しているので、ビュー関数を <code class=\"docutils literal notranslate\"><span class=\"pre\">current_datetime</span></code> と呼ぶことにします。</p>\n</li>\n<li><p>このビューは、生成されたレスポンスを含む <a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> のオブジェクトを返します。それぞれのビュー関数には、<a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> オブジェクトを返す義務があります。(例外もありますので、後で説明します。)</p></li>\n</ul>\n<aside class=\"admonition-django-s-time-zone admonition\">\n<p class=\"admonition-title\">Django のタイムゾーン</p>\n<p>Django は <a class=\"reference internal\" href=\"/ja/2.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> 設定を含んでおり、デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">America/Chicago</span></code> です。これはあなたの住む場所ではないかもしれませんので、あなたの設定ファイルを変更する必要があるかもしれません。</p>\n</aside>\n</section>\n<section id=\"mapping-urls-to-views\">\n<h2>URL をビューにマッピングする<a class=\"heading-anchor\" href=\"#mapping-urls-to-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>要約すると、このビュー関数は現在の日付と時刻を含む HTML ページを返します。このビューを特定の URL で表示するには、<em>URLconf</em> を作成する必要があります。その方法は、<a class=\"reference internal\" href=\"/ja/2.0/topics/http/urls/\"><span class=\"doc\">URL ディスパッチャ</span></a> を参照してください。</p>\n</section>\n<section id=\"returning-errors\">\n<h2>エラーを返す<a class=\"heading-anchor\" href=\"#returning-errors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django で HTTP エラーコードを返すのは簡単です。(<em>&quot;OK&quot;</em> を意味する) 200 以外の数ある一般的なHTTPステータスコード（* &quot;OK&quot; <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>を意味します）に対して、<a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> サブクラスがあります。 使用可能なサブクラスの完全なリストは、<span class=\"xref std std-ref\">request/response &lt;ref-httpresponse-subclasses&gt;`ドキュメントにあります。 エラーを知らせるためには、通常の :class:`~django.http.HttpResponse</span> の代わりに、これらのサブクラスのインスタンスを単に返してください。例えば:</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=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span><span class=\"p\">,</span> <span class=\"n\">HttpResponseNotFound</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">if</span> <span class=\"n\">foo</span><span class=\"p\">:</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponseNotFound</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;h1&gt;Page not found&lt;/h1&gt;&#39;</span><span class=\"p\">)</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;h1&gt;Page was found&lt;/h1&gt;&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>レスポンスコードの多くは使用頻度が低いため、発生しうる HTTP レスポンスコードすべてにそれぞれ特化したサブクラスが用意されているわけではありません。 しかし、<a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> のドキュメントに書かれているように、HTTP ステータスコードをコンストラクタに渡して、<a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> が任意のステータスコードを返すクラスを作成することもできます。例えば:</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=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"c1\"># Return a &quot;created&quot; (201) response code.</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"mi\">201</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>404 エラーは最も一般的な HTTP エラーなので、簡単に扱える方法があります。</p>\n<section id=\"the-http404-exception\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code> 例外<a class=\"heading-anchor\" href=\"#the-http404-exception\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.Http404\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.http.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Http404</span></span><a class=\"heading-anchor\" href=\"#django.http.Http404\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>エラーを返すときは (例えば <a class=\"reference internal\" href=\"/ja/2.0/ref/request-response/#django.http.HttpResponseNotFound\" title=\"django.http.HttpResponseNotFound\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponseNotFound</span></code></a>)、エラーページを結果とする HTML を定義する責任があります:</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\">return</span> <span class=\"n\">HttpResponseNotFound</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;h1&gt;Page not found&lt;/h1&gt;&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>利便性に加えて、サイト全体を通じて一貫性のある 404 ページを表示できるようにするため、Django は <code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code> 例外を提供しています。ビュー関数のあらゆる時点で <code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code> が投げられたとき、Django はこれを捉えてアプリケーションに対して、HTTP エラーコード 404 とともに標準的なエラーページを返します。</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><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Http404</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">polls.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Poll</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">detail</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">poll_id</span><span class=\"p\">):</span>\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        <span class=\"n\">p</span> <span class=\"o\">=</span> <span class=\"n\">Poll</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"n\">poll_id</span><span class=\"p\">)</span>\n    <span class=\"k\">except</span> <span class=\"n\">Poll</span><span class=\"o\">.</span><span class=\"n\">DoesNotExist</span><span class=\"p\">:</span>\n        <span class=\"k\">raise</span> <span class=\"n\">Http404</span><span class=\"p\">(</span><span class=\"s2\">&quot;Poll does not exist&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;polls/detail.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;poll&#39;</span><span class=\"p\">:</span> <span class=\"n\">p</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Django が 404 を返したときに独自の HTML を表示したいときは、404.html` という名前の HTML テンプレートを作成し、テンプレートツリーのトップレベルの場所に置いてください。<a class=\"reference internal\" href=\"/ja/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> が <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> にセットされているとき、このテンプレートが使われます。</p>\n<p><a class=\"reference internal\" href=\"/ja/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> の場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code> にメッセージを提供し、標準的な 404 デバッグテンプレートに表示させることができます。このメッセージ機能はデバッグ用に使用してください; 通常、プロダクトの404 テンプレートとしては不向きです。</p>\n</section>\n</section>\n<section id=\"customizing-error-views\">\n<span id=\"id1\"></span><h2>エラービューをカスタマイズする<a class=\"heading-anchor\" href=\"#customizing-error-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django のデフォルトのエラービューは、ほとんどの Web アプリケーションで十分ですが、独自の動作が必要な場合は簡単にオーバーライドできます。 URLconf で以下のようにハンドラを指定するだけです (他の場所で設定しても効果はありません)。</p>\n<p><a class=\"reference internal\" href=\"/ja/2.0/ref/views/#django.views.defaults.page_not_found\" title=\"django.views.defaults.page_not_found\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">page_not_found()</span></code></a> ビューは <a class=\"reference internal\" href=\"/ja/2.0/ref/urls/#django.conf.urls.handler404\" title=\"django.conf.urls.handler404\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">handler404</span></code></a> でオーバーライドされます:</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=\"n\">handler404</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.views.my_custom_page_not_found_view&#39;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/2.0/ref/views/#django.views.defaults.server_error\" title=\"django.views.defaults.server_error\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">server_error()</span></code></a> ビューは <a class=\"reference internal\" href=\"/ja/2.0/ref/urls/#django.conf.urls.handler500\" title=\"django.conf.urls.handler500\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">handler500</span></code></a> でオーバーライドされます:</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=\"n\">handler500</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.views.my_custom_error_view&#39;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/2.0/ref/views/#django.views.defaults.permission_denied\" title=\"django.views.defaults.permission_denied\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">permission_denied()</span></code></a> ビューは <a class=\"reference internal\" href=\"/ja/2.0/ref/urls/#django.conf.urls.handler403\" title=\"django.conf.urls.handler403\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">handler403</span></code></a> でオーバーライドされます:</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=\"n\">handler403</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.views.my_custom_permission_denied_view&#39;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/2.0/ref/views/#django.views.defaults.bad_request\" title=\"django.views.defaults.bad_request\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">bad_request()</span></code></a> ビューは <a class=\"reference internal\" href=\"/ja/2.0/ref/urls/#django.conf.urls.handler400\" title=\"django.conf.urls.handler400\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">handler400</span></code></a> でオーバーライドされます:</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=\"n\">handler400</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.views.my_custom_bad_request_view&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">参考</p>\n<p>CSRF エラービューをオーバーライドするには、<a class=\"reference internal\" href=\"/ja/2.0/ref/settings/#std-setting-CSRF_FAILURE_VIEW\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_FAILURE_VIEW</span></code></a> 設定を使用してください。</p>\n</aside>\n</section>","rootId":"writing-views","toc":[{"title":"シンプルなビュー","anchor":"a-simple-view","children":[]},{"title":"URL をビューにマッピングする","anchor":"mapping-urls-to-views","children":[]},{"title":"エラーを返す","anchor":"returning-errors","children":[{"title":"Http404 例外","anchor":"the-http404-exception","children":[]}]},{"title":"エラービューをカスタマイズする","anchor":"customizing-error-views","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Django を使う","url":"/ja/2.0/topics/"},{"docname":"topics/http/index","title":"HTTP リクエストのハンドリング","url":"/ja/2.0/topics/http/"}],"prev":{"docname":"topics/http/urls","title":"URL ディスパッチャ","url":"/ja/2.0/topics/http/urls/"},"next":{"docname":"topics/http/decorators","title":"View decorators","url":"/ja/2.0/topics/http/decorators/"},"formats":{"html":"/ja/2.0/topics/http/views/","markdown":"/ja/2.0/topics/http/views.md","json":"/ja/2.0/topics/http/views.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/topics/http/views.txt","official":"https://docs.djangoproject.com/ja/2.0/topics/http/views/","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","pt-br","ko","es","el","pl"]}