{"title":"Kerangka kerja \"sites\"","version":"2.1","locale":"id","docname":"ref/contrib/sites","url":"/id/2.1/ref/contrib/sites/","canonical":"https://djangodocs.dev/id/2.1/ref/contrib/sites/","summary":"Django datang dengan sebuah pilihan kerangka kerja \"sites\". Itu adalah pengait untuk obyek-obyek terkait dan kegunaannya untuk situs jaringan tertentu, dan itu…","html":"<span id=\"the-sites-framework\"></span><h1>Kerangka kerja &quot;sites&quot;<a class=\"heading-anchor\" href=\"#module-django.contrib.sites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django datang dengan sebuah pilihan kerangka kerja &quot;sites&quot;. Itu adalah pengait untuk obyek-obyek terkait dan kegunaannya untuk situs jaringan tertentu, dan itu adalah tempat menahan untuk nama ranah dan nama-nama &quot;verbose&quot; dari situs-situs anda ditenagai-Django.</p>\n<p>Gunakan itu jika pemasangan Django tunggal anda mentenagai lebih dari satu situs dan anda butuh membedakan diantara situs-situs tersebut dalam beberapa cara.</p>\n<p>Kerangka kerja situs utamanya berdasarkan pada model sederhana:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.models.Site\">\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\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Site</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sites.models.Site\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah model untuk menyimpan atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> dari situs jaringan.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.models.Site.domain\">\n<span class=\"sig-name descname\"><span class=\"pre\">domain</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sites.models.Site.domain\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nama ranah memenuhi syarat sepenuhnya terkait dengan situs jaringan. Sebagai contoh, <code class=\"docutils literal notranslate\"><span class=\"pre\">www.example.com</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.models.Site.name\">\n<span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sites.models.Site.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nama &quot;verbose&quot; dibaca-manusia untuk situ sjaringan.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> menentukan ID basisdata dari obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> terkait dengan berkas pengaturan tertentu itu. Jika pengaturan dihilangkan, fungsi <a class=\"reference internal\" href=\"#django.contrib.sites.shortcuts.get_current_site\" title=\"django.contrib.sites.shortcuts.get_current_site\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_current_site()</span></code></a> akan mencoba untuk mendapatkan situs saat ini dengan membandingkan <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site.domain\" title=\"django.contrib.sites.models.Site.domain\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">domain</span></code></a> dengan nama rumah dari metode <a class=\"reference internal\" href=\"/id/2.1/ref/request-response/#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">request.get_host()</span></code></a>.</p>\n<p>Bagaimana anda menggunakannya terserah anda, tetapi Django menggunakan itu dalam sepasang cara otomatis melalui kebiasanaan sederhana.</p>\n<section id=\"example-usage\">\n<h2>Contoh penggunaan<a class=\"heading-anchor\" href=\"#example-usage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Mengapa anda menggunakan situs? Ini adalah penjelasan terbaik melalui contoh.</p>\n<section id=\"associating-content-with-multiple-sites\">\n<h3>Isi terkait dengan situs-situs banyak<a class=\"heading-anchor\" href=\"#associating-content-with-multiple-sites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Situs-situs ditenagai-Django <a class=\"reference external\" href=\"http://www.ljworld.com/\">LJWorld.com</a> dan <a class=\"reference external\" href=\"http://www.lawrence.com/\">Lawrence.com</a> dikendalikan oleh organisasi berita yang sama -- surat kabar Lawrence Journal-World di Lawrence, Kansas. LJWorld.com fokus pada berita, selagi Lawrence.com fokus pada hiburan lokal. Tetapi terkadang penyunting ingin menerbitkan sebuah artikel pada <em>kedua</em> situs.</p>\n<p>Cara pemecahan tidak dibuat-buat dari memecahkan masalah yaitu membutuhkan pembuat situs untuk menerbitkan cerita sama dua kali: sekali untuk LJWorld.com dan kembali untuk Lawrence.com. Tetapi itu tidak efesien untuk pembuat situs, dan itu berulang untuk menyimpan banyak salinan dari cerita sama dalam basisdata.</p>\n<p>Pemecahan terbaik adalah sederhana: Kedua situs menggunakanbasisdata artikel yang sama, dan sebuah artikel berhubungan dengan satu atau lebih situs. Dalam istilah model Django, yaitu diwakili oleh sebuah <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> dalam model <code class=\"docutils literal notranslate\"><span class=\"pre\">Article</span></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=\"w\"> </span><span class=\"nn\">django.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">headline</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">sites</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ManyToManyField</span><span class=\"p\">(</span><span class=\"n\">Site</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ini menyelesaikan beberapa hal cukup baik:</p>\n<ul>\n<li><p>Itu membiarkan pembuat situs menyunting semua isi -- pada kedua situs -- dalam antarmuka tunggal (admin Django).</p></li>\n<li><p>Itu berarti cerita sams tidak harus menerbitkan kedua kali di basisdata; itu hanya mempunyai rekaman tunggal di basisdata.</p></li>\n<li><p>Itu membiarkan pengembang situs menggunakan kode tampilan Django sama untuk kedua situs. Kode tampilan yang memperlihatkan cerita yang diberikan cukup memeriksa untuk memastikan cerita diminta pada situs saat ini. Itu terlihat sesuatu seperti ini:</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.contrib.sites.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_current_site</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">article_detail</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">article_id</span><span class=\"p\">):</span>\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        <span class=\"n\">a</span> <span class=\"o\">=</span> <span class=\"n\">Article</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=\"nb\">id</span><span class=\"o\">=</span><span class=\"n\">article_id</span><span class=\"p\">,</span> <span class=\"n\">sites__id</span><span class=\"o\">=</span><span class=\"n\">get_current_site</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">id</span><span class=\"p\">)</span>\n    <span class=\"k\">except</span> <span class=\"n\">Article</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;Article does not exist on this site&quot;</span><span class=\"p\">)</span>\n    <span class=\"c1\"># ...</span>\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"associating-content-with-a-single-site\">\n<h3>Isi terkait dengan situs tunggal<a class=\"heading-anchor\" href=\"#associating-content-with-a-single-site\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Demikian pula, anda dapat menghubungkan sebuah model ke model <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> dalam sebuah hubungan many-to-one, menggunakan <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a>.</p>\n<p>Sebagai contoh, jika sebuah artikel hanya diizinkan pada situs tunggal, anda akan menggunakan model seperti ini:</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.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">headline</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">site</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Site</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ini mempunyai keuntungan sama seperti digambarkan di bagian terakhir.</p>\n</section>\n<section id=\"hooking-into-the-current-site-from-views\">\n<span id=\"hooking-into-current-site-from-views\"></span><h3>Mengaitkan kedalam situs saat ini dari tampilan<a class=\"heading-anchor\" href=\"#hooking-into-the-current-site-from-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Anda dapat menggunakan kerangka kerja situs di tampilan Django anda untuk melakukan hal-hal tertentu berdasarkan pada situs dimana tampilan sedang dipanggil. Sebagai contoh:</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.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</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=\"k\">if</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">SITE_ID</span> <span class=\"o\">==</span> <span class=\"mi\">3</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something.</span>\n        <span class=\"k\">pass</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something else.</span>\n        <span class=\"k\">pass</span>\n</code></pre></div>\n<p>Tentu saja, itu adalah kode-keras buruk ID situs seperti itu. pengkodean-keras semacam ini adalah terbaik untuk diperbaiki yang anda butuh diselesaikan cepat. Cara terbersih dari memenuhi hal sama adalah memeriksa ranah situs saat ini:</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.contrib.sites.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_current_site</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=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">get_current_site</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> <span class=\"n\">current_site</span><span class=\"o\">.</span><span class=\"n\">domain</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;foo.com&#39;</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something</span>\n        <span class=\"k\">pass</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something else.</span>\n        <span class=\"k\">pass</span>\n</code></pre></div>\n<p>Ini juga mempunyai keuntungan dari pemeriksaan jika kerangka kerja situs dipasang, dan mengembalikan contoh <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code></a> jika itu tidak.</p>\n<p>Jika anda tidak mempunyai akses ke obyek diminta, anda dapat menggunakan metode <code class=\"docutils literal notranslate\"><span class=\"pre\">get_current()</span></code> dari pengelola model <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a>. Anda harus kemudian memastikan bahwa berkas pengaturan anda mengandung pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a>. Contoh ini adalah setara pada satu sebelumnya:</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.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_function_without_request</span><span class=\"p\">():</span>\n    <span class=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"n\">current_site</span><span class=\"o\">.</span><span class=\"n\">domain</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;foo.com&#39;</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something</span>\n        <span class=\"k\">pass</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do something else.</span>\n        <span class=\"k\">pass</span>\n</code></pre></div>\n</section>\n<section id=\"getting-the-current-domain-for-display\">\n<h3>Mendapatkan ranah saat ini untuk ditampilkan<a class=\"heading-anchor\" href=\"#getting-the-current-domain-for-display\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>LJWorld.com dan Lawrence.com keduanya memiliki kegunakan  peringatan surel, yang membuat pembaca masuk untuk mendapatkan pemberitahuan ketika berita terjadi. itu adalah dasar: Seorang pembaca masuk pada formulir Jaringan dan segera mendapatkan sebuah surel berkata, &quot;Terima kasih untuk langganan anda.&quot;</p>\n<p>Itu sangat tidak efesien dan berulang untuk menerapkan kode pengolahan daftar ini dua kali, jadi situs menggunakan kode sama dibelakang layar. Tetapi pemberitahuan &quot;thank you for signing up&quot; butuh berbeda untuk setiap situs. Dengan menggunakan obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a>, kami dapat meringkaskan pemberitahuan &quot;thank you&quot; untuk menggunakan nilai dari <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site.name\" title=\"django.contrib.sites.models.Site.name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">name</span></code></a> dan <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site.domain\" title=\"django.contrib.sites.models.Site.domain\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">domain</span></code></a> situs saat ini.</p>\n<p>Disini adalah contoh dari apa tampilan penanganan formulir kelihatannya:</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.contrib.sites.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_current_site</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">send_mail</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">register_for_newsletter</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Check form values, etc., and subscribe the user.</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">get_current_site</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n    <span class=\"n\">send_mail</span><span class=\"p\">(</span>\n        <span class=\"s1\">&#39;Thanks for subscribing to </span><span class=\"si\">%s</span><span class=\"s1\"> alerts&#39;</span> <span class=\"o\">%</span> <span class=\"n\">current_site</span><span class=\"o\">.</span><span class=\"n\">name</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;Thanks for your subscription. We appreciate it.</span><span class=\"se\">\\n\\n</span><span class=\"s1\">-The </span><span class=\"si\">%s</span><span class=\"s1\"> team.&#39;</span> <span class=\"o\">%</span> <span class=\"p\">(</span>\n            <span class=\"n\">current_site</span><span class=\"o\">.</span><span class=\"n\">name</span><span class=\"p\">,</span>\n        <span class=\"p\">),</span>\n        <span class=\"s1\">&#39;editor@</span><span class=\"si\">%s</span><span class=\"s1\">&#39;</span> <span class=\"o\">%</span> <span class=\"n\">current_site</span><span class=\"o\">.</span><span class=\"n\">domain</span><span class=\"p\">,</span>\n        <span class=\"p\">[</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">email</span><span class=\"p\">],</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"c1\"># ...</span>\n</code></pre></div>\n<p>Pada Lawrence.com, surel ini mempunyai baris judul &quot;peringatan Terima kasih untuk berlanggakan di lawrence.co.&quot; Pada LJWorld.com, surel mempunyai judul &quot;peringatan Terima kasih untuk berlangganan di LJWorld.com.&quot; Sama seperti badan pesan surel.</p>\n<p>Catat bahwa bahkan lebih elastis (tetapi lebih kelas berat) cara melakukan ini akan menggunakan sistem cetakan  Django. Menganggap Lawrence.com dan LJWorld.com mempunyai direktori cetakan berbeda (<a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a>), anda cukup bertani sistem cetakan seperti itu:</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.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">send_mail</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.template</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Context</span><span class=\"p\">,</span> <span class=\"n\">loader</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">register_for_newsletter</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Check form values, etc., and subscribe the user.</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"n\">subject</span> <span class=\"o\">=</span> <span class=\"n\">loader</span><span class=\"o\">.</span><span class=\"n\">get_template</span><span class=\"p\">(</span><span class=\"s1\">&#39;alerts/subject.txt&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">Context</span><span class=\"p\">({}))</span>\n    <span class=\"n\">message</span> <span class=\"o\">=</span> <span class=\"n\">loader</span><span class=\"o\">.</span><span class=\"n\">get_template</span><span class=\"p\">(</span><span class=\"s1\">&#39;alerts/message.txt&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">Context</span><span class=\"p\">({}))</span>\n    <span class=\"n\">send_mail</span><span class=\"p\">(</span><span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">message</span><span class=\"p\">,</span> <span class=\"s1\">&#39;editor@ljworld.com&#39;</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">email</span><span class=\"p\">])</span>\n\n    <span class=\"c1\"># ...</span>\n</code></pre></div>\n<p>Dalam kasus ini, anda harus membuat berkas cetakan <code class=\"file docutils literal notranslate\"><span class=\"pre\">subject.txt</span></code> dan <code class=\"file docutils literal notranslate\"><span class=\"pre\">message.txt</span></code> untuk kedua direktori cetakan LJWorld.com and Lawrence.com. Itu memberikan anda lebih keluwesan, tetapi itu juga lebih rumit.</p>\n<p>itu adalah ide bagus membuka obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> sebanyak mungkin untuk memindahkan kerumitan dan perulangan yang tidak diperlukan.</p>\n</section>\n<section id=\"getting-the-current-domain-for-full-urls\">\n<h3>Mendapatkan ranah saat ini untuk URL penuh<a class=\"heading-anchor\" href=\"#getting-the-current-domain-for-full-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Kaidah <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> Django baik untuk mendapatkan URL obyek anda tanpa nama ranah, tetapi dalam beberapa kasus anda mungkin ingin menampilkan URL penuh -- dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">http://</span></code> dan ranah dan semuanya -- untuk sebuah obyek. Untuk melakukan ini, anda dapat menggunakan kerangka kerja situs. Contoh sederhana:</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</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=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">get_absolute_url</span><span class=\"p\">()</span>\n<span class=\"go\">&#39;/mymodel/objects/3/&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">domain</span>\n<span class=\"go\">&#39;example.com&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"s1\">&#39;https://</span><span class=\"si\">%s%s</span><span class=\"s1\">&#39;</span> <span class=\"o\">%</span> <span class=\"p\">(</span><span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">domain</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">get_absolute_url</span><span class=\"p\">())</span>\n<span class=\"go\">&#39;https://example.com/mymodel/objects/3/&#39;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"enabling-the-sites-framework\">\n<span id=\"id1\"></span><h2>Mengadakan kerangka situs<a class=\"heading-anchor\" href=\"#enabling-the-sites-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk mengadakan kerangka situs ini, ikuti langkah-langkah ini:</p>\n<ol class=\"arabic\">\n<li><p>Menambahkan <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.sites'</span></code> ke pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> anda.</p></li>\n<li><p>Menentukan pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</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\">SITE_ID</span> <span class=\"o\">=</span> <span class=\"mi\">1</span>\n</code></pre></div>\n</li>\n<li><p>Menjalankan <a class=\"reference internal\" href=\"/id/2.1/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a>.</p></li>\n</ol>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sites</span></code> mendaftarkan penangan sinyal <a class=\"reference internal\" href=\"/id/2.1/ref/signals/#django.db.models.signals.post_migrate\" title=\"django.db.models.signals.post_migrate\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">post_migrate</span></code></a> yang membuat situs awalan bernama <code class=\"docutils literal notranslate\"><span class=\"pre\">example.com</span></code> dengan ranah <code class=\"docutils literal notranslate\"><span class=\"pre\">example.com</span></code>. Situs ini akan juga dibuat setelah Django basisdata percobaan. Untuk mensetel nama benar dan ranah untuk proyek anda, anda dapat menggunakan <a class=\"reference internal\" href=\"/id/2.1/topics/migrations/#data-migrations\"><span class=\"std std-ref\">data migration</span></a>.</p>\n<p>Untuk melayani situs berbeda dalam produksi, anda aakn membuat berkas pengaturan dengan setiap <code class=\"docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code> (mungkin mengimpor dari berkas pengaturan umum untuk menghindari penggandaan pengaturan berbagi) dan kemudian menentukan <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"/id/2.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> sesuai untuk setiap situs.</p>\n</section>\n<section id=\"caching-the-current-site-object\">\n<h2>Men cache obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">Site</span></code> saat ini<a class=\"heading-anchor\" href=\"#caching-the-current-site-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ketika situs saat ini disimpan dalam basisdata, setiap panggilan pada <code class=\"docutils literal notranslate\"><span class=\"pre\">Site.objects.get_current()</span></code> dapat menghasilkan sebuah permintaan basisdata. Tetapi Django sedikit lebih pintar pada permintaan pertama, situs saat ini disimpan sementara, dan panggilan selanjutnya apapun mengembalikan data disimpan sementara daripada mengenai basisdata.</p>\n<p>Jika untuk alasan apapun anda ingin memaksa permintaan basisdata, anda dapat memberitahu Django untuk membersihkan cache menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">Site.objects.clear_cache()</span></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=\"c1\"># First call; current site fetched from database.</span>\n<span class=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span>\n<span class=\"c1\"># ...</span>\n\n<span class=\"c1\"># Second call; current site fetched from cache.</span>\n<span class=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span>\n<span class=\"c1\"># ...</span>\n\n<span class=\"c1\"># Force a database query for the third call.</span>\n<span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">clear_cache</span><span class=\"p\">()</span>\n<span class=\"n\">current_site</span> <span class=\"o\">=</span> <span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"the-currentsitemanager\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code><a class=\"heading-anchor\" href=\"#the-currentsitemanager\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.managers.CurrentSiteManager\">\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\">managers.</span></span><span class=\"sig-name descname\"><span class=\"pre\">CurrentSiteManager</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sites.managers.CurrentSiteManager\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Jika <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> memainkan sebuah peran kunci dalam apliaksi anda, pertimbangkan menggunakan <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> membantu dalam model anda. Itu adalah sebuah model <a class=\"reference internal\" href=\"/id/2.1/topics/db/managers/\"><span class=\"doc\">manager</span></a> yang otomatis menyaring permintaannya untuk menyertakan obyek apapun berkaitan dengan <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> saat ini.</p>\n<aside class=\"admonition-mandatory-setting-site-id admonition\">\n<p class=\"admonition-title\"><a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> wajib</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code> hanya berguna ketika pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> ditentukan dalam pengaturan anda.</p>\n</aside>\n<p>Gunakan <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> dengan menambahkan itu ke model anda dengan tegas. Sebagai contoh:</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.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sites.managers</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CurrentSiteManager</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Photo</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">photo</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">FileField</span><span class=\"p\">(</span><span class=\"n\">upload_to</span><span class=\"o\">=</span><span class=\"s1\">&#39;photos&#39;</span><span class=\"p\">)</span>\n    <span class=\"n\">photographer_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">pub_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n    <span class=\"n\">site</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Site</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">objects</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Manager</span><span class=\"p\">()</span>\n    <span class=\"n\">on_site</span> <span class=\"o\">=</span> <span class=\"n\">CurrentSiteManager</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Dengan model ini, <code class=\"docutils literal notranslate\"><span class=\"pre\">Photo.objects.all()</span></code> akan mengembalikan semua obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">Photo</span></code> dalam basisdata, tetapi <code class=\"docutils literal notranslate\"><span class=\"pre\">Photo.on_site.all()</span></code> akan mengembalikan hanya obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">Photo</span></code> berkaitan dengan situs saat ini, menurut pada pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a>.</p>\n<p>Taruh di jalan lain, dua pernyataan ini adalah sama:</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\">Photo</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">site</span><span class=\"o\">=</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">SITE_ID</span><span class=\"p\">)</span>\n<span class=\"n\">Photo</span><span class=\"o\">.</span><span class=\"n\">on_site</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Bagaimana <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> mengetahui bidang mana dari <code class=\"docutils literal notranslate\"><span class=\"pre\">Photo</span></code> adalah the <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a>? Secara awalan, <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> mencari salah satu <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a> dipanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">site</span></code> atau <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> dipanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">sites</span></code> untuk menyaring. Jika anda menggunakan sebuah bidang bernama sesuatu selain dari <code class=\"docutils literal notranslate\"><span class=\"pre\">site</span></code> atau sites` untuk mencirikan obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> mana terkait, kemudian butuh secara tegas melewatkan nama bidang penyesuaian sebagai parameter pada <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> di model anda. Model berikut, yang mempunyai bidang disebut <code class=\"docutils literal notranslate\"><span class=\"pre\">publish_on</span></code>, mempertunjukkan ini:</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.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sites.managers</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CurrentSiteManager</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Photo</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">photo</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">FileField</span><span class=\"p\">(</span><span class=\"n\">upload_to</span><span class=\"o\">=</span><span class=\"s1\">&#39;photos&#39;</span><span class=\"p\">)</span>\n    <span class=\"n\">photographer_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">pub_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n    <span class=\"n\">publish_on</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Site</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">objects</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Manager</span><span class=\"p\">()</span>\n    <span class=\"n\">on_site</span> <span class=\"o\">=</span> <span class=\"n\">CurrentSiteManager</span><span class=\"p\">(</span><span class=\"s1\">&#39;publish_on&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Jika anda berusaha menggunakan <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a> dan melewatkan sebuah bidang nama yang tidak ada, Django akan memunculkan sebuah <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code>.</p>\n<p>Akhirnya, catat bahwa anda mungkin ingin menjaga <code class=\"docutils literal notranslate\"><span class=\"pre\">Manager</span></code> biasa (bukan-situs-khusus) pada  model anda, bahkan jika anda menggunakan <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a>. Seperti dijelaskan dalam <a class=\"reference internal\" href=\"/id/2.1/topics/db/managers/\"><span class=\"doc\">manager documentation</span></a>, jika anda menentukan pengelola secara manual, kemudian Django tidak akan membuat pengeloa <code class=\"docutils literal notranslate\"><span class=\"pre\">objects</span> <span class=\"pre\">=</span> <span class=\"pre\">models.Manager()</span></code> otomatis untuk anda. Juga catat bahwa bagian tertentu dari Django -- yaitu, situs admin Django dan tampilan umum -- gunakan pengelola mana saja ditentukan <em>pertama</em> dalam model, jadi jika anda ingin situs admin memiliki akses ke semua obyek (bukan hanya satu situs-khusus), taruh <code class=\"docutils literal notranslate\"><span class=\"pre\">objects</span> <span class=\"pre\">=</span> <span class=\"pre\">models.Manager()</span></code> dalam model anda, sebelum anda menentukan <a class=\"reference internal\" href=\"#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a>.</p>\n</section>\n<section id=\"site-middleware\">\n<span id=\"id2\"></span><h2>Situs middleware<a class=\"heading-anchor\" href=\"#site-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Jika anda sering menggunakan pola ini:</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.contrib.sites.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Site</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=\"n\">site</span> <span class=\"o\">=</span> <span class=\"n\">Site</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_current</span><span class=\"p\">()</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>ada cara sederhana untuk menghindari perulangan. tambah <a class=\"reference internal\" href=\"/id/2.1/ref/middleware/#django.contrib.sites.middleware.CurrentSiteMiddleware\" title=\"django.contrib.sites.middleware.CurrentSiteMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sites.middleware.CurrentSiteMiddleware</span></code></a> pada <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>. Middleware menyetel atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">site</span></code> pada setiap permintaan obyek, jadi anda dapat menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">request.site</span></code> untuk mendapatkan situs saat ini.</p>\n</section>\n<section id=\"how-django-uses-the-sites-framework\">\n<h2>Bagaimana Django menggunakan kerangka situs<a class=\"heading-anchor\" href=\"#how-django-uses-the-sites-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Meskipun itu tidak diwajibkan bahwa anda menggunakan kerangka kerja situs, itu sangat dianjurkan, karena Django mengambil keuntungan dari itu dalam sedikit tempat. bahkan jika pemasangan Django anda menenagai hanya situs tunggal, anda harus mengambil dua detik untuk membuat obyek situs dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>, dan menunjuk ke ID dalam pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> anda.</p>\n<p>Ini adalah bagaimana Django menggunakan kerangka situs:</p>\n<ul class=\"simple\">\n<li><p>Dalam <a class=\"reference internal\" href=\"/id/2.1/ref/contrib/redirects/#module-django.contrib.redirects\" title=\"django.contrib.redirects: A framework for managing redirects.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">redirects</span> <span class=\"pre\">framework</span></code></a>, setiap obyek pengalihan berkaitan dengan situs stertentu. Ketika Django mencari untuk pengalihan, itu menghitung situs saat ini.</p></li>\n<li><p>Dalam <a class=\"reference internal\" href=\"/id/2.1/ref/contrib/flatpages/#module-django.contrib.flatpages\" title=\"django.contrib.flatpages: A framework for managing simple ?flat? HTML content in a database.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">flatpages</span> <span class=\"pre\">framework</span></code></a>, setiap flatpage dihubungkan dengan situs tertentu. Ketika sebuah flatpage dibuat, anda menentukan <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> nya, dan <a class=\"reference internal\" href=\"/id/2.1/ref/contrib/flatpages/#django.contrib.flatpages.middleware.FlatpageFallbackMiddleware\" title=\"django.contrib.flatpages.middleware.FlatpageFallbackMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FlatpageFallbackMiddleware</span></code></a> memeriksa situs saat ini dalam mengambil flatpage untuk dimunculkan.</p></li>\n<li><p>Dalam <a class=\"reference internal\" href=\"/id/2.1/ref/contrib/syndication/#module-django.contrib.syndication\" title=\"django.contrib.syndication: A framework for generating syndication feeds, in RSS and Atom, quite easily.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">syndication</span> <span class=\"pre\">framework</span></code></a>, cetakan untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">title</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">description</span></code> otomatis mempunyai akses ke variabel <code class=\"docutils literal notranslate\"><span class=\"pre\">{{site}}</span></code>, yaitu obyek which is the <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> mewakili situs saat ini. Juga, kaitan untuk menyediakan barang URL akan menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> dari obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> saat ini jika anda tidak menentukan ranah berkualitas-sepenuhnya.</p></li>\n<li><p>Dalam <a class=\"reference internal\" href=\"/id/2.1/topics/auth/#module-django.contrib.auth\" title=\"django.contrib.auth: Django's authentication framework.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">authentication</span> <span class=\"pre\">framework</span></code></a>, <a class=\"reference internal\" href=\"/id/2.1/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.views.LoginView</span></code></a> melewatkan nama <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> sat ini ke cetakan sebagai <code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">site_name</span> <span class=\"pre\">}}</span></code>.</p></li>\n<li><p>Tampilan jalan pintas (<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.contenttypes.views.shortcut</span></code>) menggunakan ranah dari obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> saat ini ketika menghitung sebuah URL obyek.</p></li>\n<li><p>Dalam kerangka kerja admin, tautan &quot;lihat pada situs&quot; menggunakan <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> saat ini untuk bekerja ranah untuk situs yang itu akan alihkan.</p></li>\n</ul>\n</section>\n<section id=\"requestsite-objects\">\n<h2>Obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code><a class=\"heading-anchor\" href=\"#requestsite-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p id=\"id3\">Beberapa aplikasi <a class=\"reference internal\" href=\"/id/2.1/ref/contrib/\"><span class=\"doc\">django.contrib</span></a> mengambil keuntungan dari kerangka kerja situs tetapi dirancang dengan cara yang tidak <em>membutuhkan</em> kerangka kerja situs untuk dipasang dalam basisdata anda. (Beberapa orang tidak ingin, atau hanya tidak <em>dapat</em> memasang tabel tambahan basisdata yang kerangka kera situs butuhkan.) Untuk kasus-kasus itu, kerangka kerja menyediakan sebuah kelas <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sites.requests.RequestSite</span></code></a>,yang dapat digunakan sebagai sebuah fallback ketika dukungan-basisdata kerangka kerja situs tidak tersedia.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.requests.RequestSite\">\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\">requests.</span></span><span class=\"sig-name descname\"><span class=\"pre\">RequestSite</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sites.requests.RequestSite\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah kelas yang berbagi antarmuka utama dari <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> (yaitu, itu memiliki atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>) tetapi mendapatkan datanya dari obyek <a class=\"reference internal\" href=\"/id/2.1/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> Django daripada dari sebuah basisdata.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.requests.RequestSite.__init__\">\n<span class=\"sig-name descname\"><span class=\"pre\">__init__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sites.requests.RequestSite.__init__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Setel atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> ke nilai dari <a class=\"reference internal\" href=\"/id/2.1/ref/request-response/#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_host()</span></code></a>.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Sebuah obyek <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code></a> mempunyai antarmuka mirip pada obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> biasa, kecuali metode <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite.__init__\" title=\"django.contrib.sites.requests.RequestSite.__init__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__init__()</span></code></a> nya mengambil sebuah obyek <a class=\"reference internal\" href=\"/id/2.1/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>.  Itu dapat menyimpulkan <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> dengan mencari domain permintaan. Itu mempunyai metode <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">delete()</span></code> untuk mencocokkan antarmuka dari <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a>, tetapi metode-metode memunculkan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code></a>.</p>\n</section>\n<section id=\"get-current-site-shortcut\">\n<h2>Jalan pintas <code class=\"docutils literal notranslate\"><span class=\"pre\">get_current_site</span></code><a class=\"heading-anchor\" href=\"#get-current-site-shortcut\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Akhirnya, untuk menghindari kode fallback berulang, kerangka kerja menyediakan sebuah fungsi <a class=\"reference internal\" href=\"#django.contrib.sites.shortcuts.get_current_site\" title=\"django.contrib.sites.shortcuts.get_current_site\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.sites.shortcuts.get_current_site()</span></code></a></p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sites.shortcuts.get_current_site\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">shortcuts.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_current_site</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sites.shortcuts.get_current_site\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah fungsi yang memeriksa jika <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sites</span></code> dipasang dan mengembalikan salah satu obyek <a class=\"reference internal\" href=\"#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> object saat ini atau obyek <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code></a> berdasarkan pada permintaan. Itu mencari situs saat ini berdasarkan pada <a class=\"reference internal\" href=\"/id/2.1/ref/request-response/#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">request.get_host()</span></code></a> jika pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> tidak ditentukan.</p>\n<p>Kedua ranah dan port mungkin dikembalikan oleh <a class=\"reference internal\" href=\"/id/2.1/ref/request-response/#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">request.get_host()</span></code></a> ketika kepala Host mempunyai port dengan jelas ditentukan, misalnya <code class=\"docutils literal notranslate\"><span class=\"pre\">example.com:80</span></code>. Dalam kasus tersebut, jika pencarian gagal karena host tidak cocok dengan sebuah rekaman dalam basisdata, port dihilangkan dan pencarian dicoba kembali dengan hanya bagian ranah. Ini tidak berlaku pada <a class=\"reference internal\" href=\"#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code></a> yang akan selalu menggunakan hos tidak berubah.</p>\n</dd></dl>\n\n</section>","rootId":"module-django.contrib.sites","toc":[{"title":"Contoh penggunaan","anchor":"example-usage","children":[{"title":"Isi terkait dengan situs-situs banyak","anchor":"associating-content-with-multiple-sites","children":[]},{"title":"Isi terkait dengan situs tunggal","anchor":"associating-content-with-a-single-site","children":[]},{"title":"Mengaitkan kedalam situs saat ini dari tampilan","anchor":"hooking-into-the-current-site-from-views","children":[]},{"title":"Mendapatkan ranah saat ini untuk ditampilkan","anchor":"getting-the-current-domain-for-display","children":[]},{"title":"Mendapatkan ranah saat ini untuk URL penuh","anchor":"getting-the-current-domain-for-full-urls","children":[]}]},{"title":"Mengadakan kerangka situs","anchor":"enabling-the-sites-framework","children":[]},{"title":"Men cache obyek Site saat ini","anchor":"caching-the-current-site-object","children":[]},{"title":"CurrentSiteManager","anchor":"the-currentsitemanager","children":[]},{"title":"Situs middleware","anchor":"site-middleware","children":[]},{"title":"Bagaimana Django menggunakan kerangka situs","anchor":"how-django-uses-the-sites-framework","children":[]},{"title":"Obyek RequestSite","anchor":"requestsite-objects","children":[]},{"title":"Jalan pintas get_current_site","anchor":"get-current-site-shortcut","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/2.1/ref/"},{"docname":"ref/contrib/index","title":"Paket contrib","url":"/id/2.1/ref/contrib/"}],"prev":{"docname":"ref/contrib/sitemaps","title":"Kerangka peta situs","url":"/id/2.1/ref/contrib/sitemaps/"},"next":{"docname":"ref/contrib/staticfiles","title":"Aplikasi staticfiles","url":"/id/2.1/ref/contrib/staticfiles/"},"formats":{"html":"/id/2.1/ref/contrib/sites/","markdown":"/id/2.1/ref/contrib/sites.md","json":"/id/2.1/ref/contrib/sites.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/contrib/sites.txt","official":"https://docs.djangoproject.com/id/2.1/ref/contrib/sites/","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"]}