<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Django | ビズドットオンライン</title>
	<atom:link href="https://it-biz.online/tag/django/feed/" rel="self" type="application/rss+xml" />
	<link>https://it-biz.online</link>
	<description></description>
	<lastBuildDate>Wed, 02 Aug 2023 03:01:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://it-biz.online/wp-content/uploads/2019/10/cropped-4a332f05ade4ac7bb3c46c472cb5eac8-32x32.png</url>
	<title>Django | ビズドットオンライン</title>
	<link>https://it-biz.online</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Django】テンプレートの仕組みと基本を３分で解説</title>
		<link>https://it-biz.online/python/template/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 10 Jul 2023 09:31:57 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8138</guid>

					<description><![CDATA[Djangoのテンプレート（template）は、Webアプリケーションで生成されるHTMLの骨格を作成し、その中に動的なデータを埋め込むための仕組みです。 このテンプレートシステムを理解することで、Pythonのコード [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://it-biz.online/python/django/">Django</a>のテンプレート（template）は、Webアプリケーションで生成される<a href="https://it-biz.online/web-design/html-basic/">HTML</a>の骨格を作成し、その中に動的なデータを埋め込むための仕組みです。</p>



<p>このテンプレートシステムを理解することで、<a href="https://it-biz.online/python/python-abc/">Python</a>のコードとHTMLの間でデータを効率よくやり取りし、見栄えの良いウェブページを容易に作成することが可能となります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページでは、Djangoのテンプレートについて、初心者向けに１からわかりやすく整理して解説します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>Djangoのテンプレートとは？</li>



<li>Djangoテンプレートの基本</li>



<li>Djangoテンプレートタグとフィルター</li>



<li>Djangoテンプレートでの静的ファイルの扱い</li>



<li>Djangoテンプレートの継承</li>
</ul>
</div>
</div></div>



<p>Djangoを用いたWeb開発を行いたい人であれば、<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つです。</span></strong>是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Django「テンプレート」とは何か？</a></li><li><a href="#toc2" tabindex="0">Djangoテンプレートの基本</a><ol><li><a href="#toc3" tabindex="0">Django：テンプレート変数</a></li><li><a href="#toc4" tabindex="0">Django：テンプレートタグ</a></li></ol></li><li><a href="#toc5" tabindex="0">Djangoテンプレートの作成と使用方法</a><ol><li><a href="#toc6" tabindex="0">テンプレート（HTMLファイル）の作成</a></li><li><a href="#toc7" tabindex="0">テンプレートの使用</a></li></ol></li><li><a href="#toc8" tabindex="0">Django：テンプレート（template）のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Django「テンプレート」とは何か？</span></h2>



<p>Djangoのテンプレートとは、Webアプリケーションの画面の骨格を表すHTMLファイルのことを指します。Djangoでは、このテンプレートファイルに<strong><span class="marker-under">Pythonのコードから動的に値を受け渡すことで、さまざまな画面を表示させることができます。</span></strong></p>



<figure class="wp-block-image aligncenter size-large"><img fetchpriority="high" decoding="async" width="1024" height="539" src="https://it-biz.online/wp-content/uploads/2023/07/image-4-1024x539.png" alt="Django テンプレート" class="wp-image-8141" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-4-1024x539.png 1024w, https://it-biz.online/wp-content/uploads/2023/07/image-4-300x158.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-4-500x263.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-4-768x405.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-4-800x421.png 800w, https://it-biz.online/wp-content/uploads/2023/07/image-4.png 1029w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図1：Django テンプレート</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>テンプレートを使用することで、Webページの見た目（HTML）とロジック（Pythonコード）を明確に分けることができ、コードの整理整頓、保守、再利用を容易にし、チームでの開発をスムーズにすることができます。</p>
</div></div>



<p>それでは、早速テンプレートの基本的な作成方法と、その利用方法を解説していきます。</p>



<h2 class="wp-block-heading"><span id="toc2">Djangoテンプレートの基本</span></h2>



<p>DjangoのテンプレートはHTMLファイルの形で保存され、主に2つの部分から成り立ちます。</p>



<ol class="wp-block-list">
<li>HTML</li>



<li>テンプレートタグ or テンプレート変数</li>
</ol>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="714" height="483" src="https://it-biz.online/wp-content/uploads/2023/07/image-6.png" alt="" class="wp-image-8145" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-6.png 714w, https://it-biz.online/wp-content/uploads/2023/07/image-6-300x203.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-6-500x338.png 500w" sizes="(max-width: 714px) 100vw, 714px" /><figcaption class="wp-element-caption">図2：テンプレート変数</figcaption></figure>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/html-rule/">HTMLファイルの書き方・作り方</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>骨格となるHTMLファイルに、<a href="https://it-biz.online/it-skills/variable/">変数</a>を埋め込んでおき、その変数にPythonから値を渡して１つの画面を作成するようなイメージ。</p>
</div></div>



<p>このようにテンプレートを利用して、各場面に応じて修正が必要な部分だけをPythonから渡してあげることで、様々な画面を作成できる仕組みがテンプレートです。</p>



<p>Djangoのテンプレート変数とテンプレートタグの使い方を解説します。</p>



<h3 class="wp-block-heading"><span id="toc3">Django：テンプレート変数</span></h3>



<p><strong>テンプレート変数</strong>は <code><span class="bold-blue">{{ variable_name }}</span></code> の形でHTMLファイル内に記述します。ここには、Pythonから受け取った値（文字列、数値、リスト、オブジェクトなど）が挿入されます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;p>Hello, {{ name }}!&lt;/p></pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/paragraph/">HTML：pタグ</a></p>



<p>ここでの <code>name</code> はテンプレート変数です。ここに Python コードから値が渡されれば、その値が表示さる仕組み。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、<code>name</code> に "John" という文字列が渡されれば、生成されるHTMLは以下のようになります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;p>Hello, John!&lt;/p></pre>
</div></div>



<h3 class="wp-block-heading"><span id="toc4">Django：テンプレートタグ</span></h3>



<p>一方、<strong>テンプレートタグ</strong>は <code><span class="bold-blue">{% tag %}</span></code> の形でテンプレートに記述され、より複雑なロジックや制御フローをHTMLに組み込むことができます。</p>



<p>テンプレートタグにはさまざまな種類があり、条件分岐（<code>{% if %}</code>、<code>{% else %}</code>）、ループ（<code>{% for %}</code>）、テンプレートの継承やインクルード（<code>{% extends %}</code>、<code>{% include %}</code>）など、多くの操作を行うことができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、以下のコードでは、<code>item_list</code> の各要素に対してループを行い、リストの要素をHTMLに挿入しています。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;ul>
{% for item in item_list %}
    &lt;li>{{ item }}&lt;/li>
{% endfor %}
&lt;/ul></pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/list/">liタグ</a> / <a href="https://it-biz.online/python/python-list/">Pythonのリスト</a></p>



<p><code>item_list</code> はPythonから渡されたリストで、その各要素が <code>item</code> としてHTMLに埋め込まれます。</p>



<p>例えば、<code>item_list</code> に <code>["Apple", "Banana", "Cherry"]</code> というリストが渡された場合、生成されるHTMLは以下のようになります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;ul>
    &lt;li>Apple&lt;/li>
    &lt;li>Banana&lt;/li>
    &lt;li>Cherry&lt;/li>
&lt;/ul></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、Djangoテンプレートタグを使うと、HTMLの生成をPythonのコードで制御することができます。</p>
</div></div>



<p>Djangoのテンプレートタグは多種多様。ここで、最も一般的に使用されるタグをいくつか取り上げ、その機能と使い方を表形式で整理しておきます。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>テンプレートタグ</th><th>説明</th><th>使用例</th></tr></thead><tbody><tr><td><code>{% for %}</code>、<code>{% endfor %}</code></td><td>リストの各要素に対してループを行う。</td><td><code>{% for item in item_list %}&lt;li&gt;{{ item }}&lt;/li&gt;{% endfor %}</code></td></tr><tr><td><code>{% if %}</code>、<code>{% endif %}</code></td><td>条件分岐を行う。</td><td><code>{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}</code></td></tr><tr><td><code>{% else %}</code></td><td><code>if</code> タグまたは <code>for</code> タグと一緒に使用して、条件が満たされなかった場合の動作を定義する。</td><td><code>{% if user.is_authenticated %}Hello, {{ user.username }}.{% else %}Please log in.{% endif %}</code></td></tr><tr><td><code>{% elif %}</code></td><td><code>if</code> タグと一緒に使用して、複数の条件をチェックする。</td><td><code>{% if user.is_admin %}Admin{% elif user.is_staff %}Staff{% else %}User{% endif %}</code></td></tr><tr><td><code>{% empty %}</code></td><td><code>for</code> タグと一緒に使用して、リストが空の場合の動作を定義する。</td><td><code>{% for item in item_list %}&lt;li&gt;{{ item }}&lt;/li&gt;{% empty %}&lt;li&gt;No items.&lt;/li&gt;{% endfor %}</code></td></tr><tr><td><code>{% extends %}</code></td><td>他のテンプレートを継承する。</td><td><code>{% extends "base.html" %}</code></td></tr><tr><td><code>{% block %}</code>、<code>{% endblock %}</code></td><td><code>extends</code> タグで継承されたテンプレートで上書き可能な領域を定義する。</td><td><code>{% block content %}This is the content.{% endblock %}</code></td></tr><tr><td><code>{% include %}</code></td><td>他のテンプレートを現在の位置に挿入する。</td><td><code>{% include "header.html" %}</code></td></tr><tr><td><code>{% static %}</code></td><td>静的ファイルへのURLを生成する。</td><td><code>&lt;img src="{% static "images/logo.png" %}"&gt;</code></td></tr><tr><td><code>{% url %}</code></td><td>DjangoのURLパターン名からURLを動的に生成する</td><td><code>&lt;a href="{% url 'homepage' %}"&gt;Home&lt;/a&gt;</code></td></tr><tr><td><code>{% csrf_token %}</code></td><td>CSRF保護のためのトークンを出力する。通常はPOSTフォーム内で使用する。</td><td><code>&lt;a href="{% url 'homepage' %}"&gt;Home&lt;/a&gt;</code></td></tr><tr><td><code>{% load %}</code></td><td>カスタムテンプレートタグやフィルタを読み込む。</td><td><code>{% load custom_tags %}</code></td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次の章では、Djangoテンプレートの作成方法について詳しく解説します。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc5">Djangoテンプレートの作成と使用方法</span></h2>



<p>上記の基本知識を踏まえ、早速Djangoテンプレートの作成と使用方法を実際に見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">テンプレート（HTMLファイル）の作成</span></h3>



<p>テンプレートは基本的にはHTMLファイルであり、Djangoプロジェクト内のアプリケーションフォルダにある<code>templates</code>ディレクトリに保存されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、<code>myapp</code>という名前のアプリケーションがある場合、テンプレートは<code><span class="bold-blue">myapp/templates/</span></code>ディレクトリに配置します。</p>
</div></div>



<p>↓のような簡単なテンプレートを作成してみます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- myapp/templates/hello.html -->

&lt;!DOCTYPE html>
&lt;html>
&lt;head>
    &lt;title>Hello Django&lt;/title>
&lt;/head>
&lt;body>
    &lt;h1>Hello, {{ name }}!&lt;/h1>
&lt;/body>
&lt;/html></pre>



<p>このテンプレートでは、<code>{{ name }}</code>というテンプレート変数を使用しており、この部分は後でPythonコードから受け取った値に置き換えられます。</p>



<h3 class="wp-block-heading"><span id="toc7">テンプレートの使用</span></h3>



<p>Djangoのビューでテンプレートを使用するには、<strong><span class="marker-under"><a href="https://it-biz.online/python/render/"><code>render</code>関数</a></span></strong>を使います。この関数は、指定したテンプレートを使用してHTTPレスポンスを生成します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/def/">Pythonの関数とは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次のコードは、上記のテンプレートを使って"Hello, Django!"と表示するビューの例です。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># myapp/views.py

from django.shortcuts import render

def hello(request):
    return render(request, 'hello.html', {'name': 'Django'})</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文</a> / <a href="https://it-biz.online/python/views/">views.py（ビューとは？）</a></p>



<p>このビューでは、<code>render</code>関数を使って<code>hello.html</code>テンプレートをレンダリングしています。3つ目の引数<code>{'name': 'Django'}</code>は、テンプレートに渡すコンテキストとなり、この例ではテンプレート変数<code>{{ name }}</code>が'Django'に置き換えられます。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>render関数の詳しい使い方や利用する際の注意点は以下の記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/python/render/" title="【Django】render関数の使い方をわかりやすく３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/07/render-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/07/render-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/07/render-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/07/render-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Django】render関数の使い方をわかりやすく３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】Djangoのrender関数の使い方を、基本的な概念から具体的なコード例までわかりやすく解説。初心者でも理解できるよう、用途や構文、利用時の注意点についても３分間で効率的にご説明。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.07.10</div></div></div></div></a>
</div></figure>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以上がDjangoテンプレートの基本的な作成と使用方法です。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc8">Django：テンプレート（template）のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center is-style-cross-line has-box-style"><strong>Djangoテンプレート</strong></p>



<ol class="wp-block-list">
<li>DjangoのテンプレートはWebアプリケーションの画面（ビュー）の骨格を形成するHTMLファイル。</li>



<li>データを動的に埋め込むことで、同じテンプレートから異なる画面を作成可能。</li>



<li>HTMLとPythonコードを分離し、保守性と再利用性を向上させることが可能。</li>
</ol>



<p class="has-text-align-center is-style-cross-line has-box-style"><strong>テンプレート変数</strong></p>



<ol class="wp-block-list">
<li>テンプレート変数はPythonから受け取ったデータをHTMLに埋め込むためのプレースホルダ。</li>



<li>テンプレート変数は <code>{{ variable_name }}</code> の形式で記述される。</li>



<li>テンプレート変数はPythonの値（文字列、数値、リスト、オブジェクトなど）をその場所に表示。</li>
</ol>



<p class="has-text-align-center is-style-cross-line has-box-style"><strong>テンプレートタグ</strong></p>



<ol class="wp-block-list">
<li>テンプレートタグはHTMLテンプレートに制御構造を追加するための構文。</li>



<li>テンプレートタグは <code>{% tag %}</code> の形式で記述される。</li>



<li>ループ（<code>for</code>）、条件分岐（<code>if</code>）、テンプレートの継承やインクルード（<code>extends</code>、<code>include</code>）など、さまざまな制御構造を表現可能。</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
    &lt;title>{{ title }}&lt;/title>
    &lt;link rel="stylesheet" href="{% static 'styles.css' %}">
&lt;/head>
&lt;body>
    &lt;header>
        &lt;h1>{{ header }}&lt;/h1>
    &lt;/header>
    
    &lt;main>
        &lt;h2>Welcome, {{ username }}!&lt;/h2>
        &lt;p>Here are some of your favorite fruits:&lt;/p>
        &lt;ul>
        {% for fruit in favorite_fruits %}
            &lt;li>{{ fruit }}&lt;/li>
        {% empty %}
            &lt;li>No favorite fruits found.&lt;/li>
        {% endfor %}
        &lt;/ul>
    &lt;/main>
    
    &lt;footer>
        {% include 'footer.html' %}
    &lt;/footer>
&lt;/body>
&lt;/html></pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/main/">mainタグ</a></p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPython/Djangoを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】テンプレートの継承（extends/block）を３分で解説</title>
		<link>https://it-biz.online/python/template-inheritance/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 06:51:05 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8166</guid>

					<description><![CDATA[このページでは、Djangoのテンプレートシステムにおける１つの核心的な概念「テンプレートの継承」について詳しく説明します。 参考　Djangoのテンプレートとは？ テンプレートの継承とは、一言で言うと、既存のテンプレー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>このページでは、<a href="https://it-biz.online/python/django/">Django</a>のテンプレートシステムにおける１つの核心的な概念「テンプレートの継承」について詳しく説明します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/template/">Djangoのテンプレートとは？</a></p>



<p>テンプレートの継承とは、一言で言うと、<strong>既存のテンプレート（通常はベースとなるテンプレート）から特定の部分を再利用し、その上で新たな要素を追加したり、既存の要素をオーバーライド（上書き）したりすることを可能にする機能</strong>です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="876" height="365" src="https://it-biz.online/wp-content/uploads/2023/07/image-9.png" alt="テンプレートの継承" class="wp-image-8169" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-9.png 876w, https://it-biz.online/wp-content/uploads/2023/07/image-9-300x125.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-9-500x208.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-9-768x320.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-9-800x333.png 800w" sizes="(max-width: 876px) 100vw, 876px" /><figcaption class="wp-element-caption">図1：テンプレートの継承</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページでは、テンプレートの継承とは何か？そのメリットと使用方法、さらには実践的な例とベストプラクティスを含む具体的な応用例を紹介します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>テンプレートの継承とは</li>



<li>テンプレートの継承の使い方</li>



<li>テンプレートの継承の実践的な例</li>



<li>テンプレートの継承と再利用のベストプラクティス</li>
</ul>
</div>
</div></div>



<p>Djangoを用いたWeb開発を行いたい人であれば、<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つです。</span></strong>是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Django：テンプレートの継承とは</a></li><li><a href="#toc2" tabindex="0">ベーステンプレートの作成</a><ol><li><a href="#toc3" tabindex="0">Django：blockタグ</a></li></ol></li><li><a href="#toc4" tabindex="0">子テンプレートの作成とベーステンプレートからの継承</a><ol><li><a href="#toc5" tabindex="0">継承するHTMLファイルの指定</a></li></ol></li><li><a href="#toc6" tabindex="0">Django：extends/blockのまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Django：テンプレートの継承とは</span></h2>



<p>テンプレートの継承とは、あるテンプレート（一般的にはベーステンプレートと呼ばれます）が持つ<strong>一部または全部の構造や要素を再利用し、新たなテンプレートを作る方法</strong>を指します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、画面のヘッダーやフッターを定義するベーステンプレートを用意しておいて、そのテンプレートをもとに、ヘッダーやフッターだけを編集した別のテンプレートを作るようなイメージ。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="772" height="592" src="https://it-biz.online/wp-content/uploads/2023/07/image-10.png" alt="Django テンプレートのイメージ" class="wp-image-8170" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-10.png 772w, https://it-biz.online/wp-content/uploads/2023/07/image-10-300x230.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-10-500x383.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-10-768x589.png 768w" sizes="(max-width: 772px) 100vw, 772px" /><figcaption class="wp-element-caption">図2：Django テンプレートのイメージ</figcaption></figure>



<p>これは、DjangoがDRY（Don't Repeat Yourself）というコーディング原則を反映したもので、同じコードを何度も書く必要を減らし、保守性と効率性を向上させるための機能の１つ。</p>



<p>テンプレートの継承を理解するために、以下の２点について学習していきます。</p>



<ol class="wp-block-list">
<li><strong>基底テンプレートの作成：</strong> Djangoのテンプレートシステムでは、ベースとなるテンプレートを作成し、その中に再利用したいHTMLの構造や要素を定義。ナビゲーションバー、フッター、スタイルシートのリンク、スクリプトのリンクなど、複数のページで共有される要素を含みます。</li>



<li><strong>ブロックの定義とオーバーライド：</strong> ベーステンプレートには、子テンプレートでオーバーライド（上書き）または追加できるブロックを定義します。これらのブロックは、ページタイトル、メインコンテンツ、追加のスタイルシートなど、ページによって異なる可能性のある部分を占めます。</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記２点についてステップバイステップで解説していきます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">ベーステンプレートの作成</span></h2>



<p>まず、ベース（親）テンプレートを作成します。このベーステンプレートには、<strong><span class="marker-under">すべてのテンプレートから共有される「共通のHTML構造」を定義</span></strong>します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/html-basic/">HTMLとは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下がベーステンプレート（<code>base.html</code>）の例です。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html lang="ja">
&lt;head>
    &lt;meta charset="UTF-8">
    &lt;title>{% block title %}デフォルトタイトル{% endblock title %}&lt;/title>
    &lt;!-- その他のメタ情報、スタイルシートのリンクなど -->
&lt;/head>
&lt;body>
    &lt;header>
        &lt;!-- ヘッダーの内容 -->
    &lt;/header>

    &lt;main>
        {% block content %}
        &lt;!-- この部分は子テンプレートでオーバーライドされます -->
        {% endblock content %}
    &lt;/main>

    &lt;footer>
        &lt;!-- フッターの内容 -->
    &lt;/footer>

    &lt;!-- その他のスクリプトなど -->
&lt;/body>
&lt;/html></pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/html-rule/">HTMLの基本構造・書き方</a> / <a href="https://it-biz.online/web-design/header/">&lt;header>タグ</a> /<a href="https://it-biz.online/web-design/main/">&lt;main>タグ</a></p>



<p>ここでは<code>{% block title %}</code>と<code>{% block content %}</code>の2つのブロックを定義しています。これらは子テンプレートでオーバーライドすることができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここで、blockタグについて詳細を補足します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">Django：blockタグ</span></h3>



<p><code>block</code> は<strong>テンプレート内で再利用可能なセクションを定義するためのタグ</strong>です。ベーステンプレートでは <code>block</code> を使用して子テンプレートで上書き（オーバーライド）できるセクションを定義します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% block blockname %}
    Default content...
{% endblock %}</pre>



<p><code><span class="bold-blue">blockname</span></code> はブロックの名前（任意の名前）で、<code><span class="bold-blue">Default content...</span></code> はブロックのデフォルトコンテンツ（子テンプレートでオーバーライドされない場合に表示される部分）です。</p>



<p>このblockタグを利用した部分は、次に解説する子テンプレートで上書きをすることが可能になるということです。</p>



<h2 class="wp-block-heading"><span id="toc4">子テンプレートの作成とベーステンプレートからの継承</span></h2>



<p>次に、ベーステンプレートから継承する子テンプレートを作成します。</p>



<p>子テンプレートでは、<code><span class="bold-blue">{% extends "base.html" %}</span></code>を使用して基底テンプレートから継承を行い、<code><span class="bold-blue">{% block %}</span></code>タグを使用して基底テンプレートのブロックをオーバーライドします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% extends "base.html" %}

{% block title %}マイページ{% endblock title %}

{% block content %}
    &lt;h1>ようこそ、マイページへ！&lt;/h1>
    &lt;!-- その他のコンテンツ -->
{% endblock content %}</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/h1-h6/">hタグ</a></p>



<p>この子テンプレートでは、基底テンプレートの<code>title</code>ブロックと<code>content</code>ブロックをオーバーライドしています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>分かりやすく言うと、<strong>１行目のextendsタグで「base.html」をテンプレートにするよ！</strong>と宣言。<br>そして、blockタグで「<strong>この部分はこの内容で上書きするよ！</strong>」という処理を書いています。</p>
</div></div>



<p>具体的なサンプルコードを見てみましょう。</p>



<p>例えば、以下のようなベーステンプレートがあるとします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
    &lt;title>{% block title %}デフォルトタイトル{% endblock %}&lt;/title>
&lt;/head>
&lt;body>
    &lt;header>
        &lt;nav>
            &lt;!-- ナビゲーションメニュー -->
        &lt;/nav>
    &lt;/header>

    &lt;main>
        {% block content %}
        &lt;!-- デフォルトコンテンツ:子テンプレートでオーバーライド予定 -->
        {% endblock %}
    &lt;/main>

    &lt;footer>
        &lt;!-- フッター情報 -->
    &lt;/footer>
&lt;/body>
&lt;/html></pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/nav/">navタグ</a></p>



<p>このテンプレートをもとに、<code>{% block %}</code>タグを使ってベーステンプレートのブロックをオーバーライド↓。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% extends "base.html" %}

{% block title %}
マイページ
{% endblock %}

{% block content %}
&lt;h1>ようこそ、マイページへ！&lt;/h1>
&lt;p>ここは、ユーザーのマイページです。&lt;/p>
{% endblock %}</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/web-design/paragraph/">pタグ（段落タグ）</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>こうすることで、ベーステンプレートをもとにして、必要な部分だけを上書きした画面が出来上がるというわけです。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="774" height="311" src="https://it-biz.online/wp-content/uploads/2023/07/image-11.png" alt="" class="wp-image-8171" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-11.png 774w, https://it-biz.online/wp-content/uploads/2023/07/image-11-300x121.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-11-500x201.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-11-768x309.png 768w" sizes="(max-width: 774px) 100vw, 774px" /><figcaption class="wp-element-caption">図3：ベーステンプレートからの継承</figcaption></figure>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-info-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">テンプレートの継承の実践的な例</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>ここでは、ブログアプリを開発する場合の例を用いて、具体的にテンプレートの継承がどのように活用されるか？をご紹介します。</p>



<p class="has-text-align-center"><span class="badge-blue">ステップ１</span>　<strong>基底テンプレートの作成</strong></p>



<p>ブログの全てのページで共有される要素（例えばナビゲーションバー、フッター、ヘッダー画像等）を含む基底テンプレート(<code>base.html</code>)を作成します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html lang="ja">
&lt;head>
    &lt;meta charset="UTF-8">
    &lt;title>{% block title %}My Blog{% endblock title %}&lt;/title>
    &lt;!-- その他のメタ情報、スタイルシートのリンクなど -->
&lt;/head>
&lt;body>
    &lt;header>
        &lt;!-- ヘッダーの内容 -->
    &lt;/header>

    &lt;nav>
        &lt;!-- ナビゲーションバーの内容 -->
    &lt;/nav>

    &lt;main>
        {% block content %}
        &lt;!-- この部分は子テンプレートでオーバーライドされます -->
        {% endblock content %}
    &lt;/main>

    &lt;footer>
        &lt;!-- フッターの内容 -->
    &lt;/footer>

    &lt;!-- その他のスクリプトなど -->
&lt;/body>
&lt;/html></pre>



<p class="has-text-align-center"><span class="badge-blue">ステップ２</span>　<strong>ブログ投稿ページのテンプレート作成</strong></p>



<p>次に、基底テンプレートから継承したブログ投稿ページのテンプレート(<code>post_detail.html</code>)を作成します。このテンプレートでは、基底テンプレートの<code>content</code>ブロックをオーバーライドします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% extends "base.html" %}

{% block title %}
{{ post.title }} - My Blog
{% endblock title %}

{% block content %}
    &lt;h1>{{ post.title }}&lt;/h1>
    &lt;p>{{ post.content }}&lt;/p>
{% endblock content %}</pre>



<p>上記のようにして、すべてのページで共有される基本的なHTML構造を維持しつつ、個々のページで異なる内容を表示できます。これにより、コードの重複を避け、保守性と可読性を向上させることができます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc5">継承するHTMLファイルの指定</span></h3>



<p>Djangoでは<code>extends</code>タグを使って他のテンプレートを継承する際、<strong><span class="marker-under">テンプレートファイルの位置は<code>TEMPLATES</code>設定の<code>DIRS</code>オプションに指定されたディレクトリ</span></strong>が検索対象となります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>つまり、<code>extends</code>で指定するテンプレートファイルは同じフォルダに存在する必要はありません。</p>
</div></div>



<p>通常、Djangoプロジェクトはプロジェクト全体のテンプレートを配置するための<code>templates</code>ディレクトリを持ち、各アプリケーションディレクトリの下にも各々<code>templates</code>ディレクトリを持つ構造になっています。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
├── templates/
│   ├── base.html
└── todo/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations/
    ├── models.py
    ├── templates/
    │   ├── todo/
    │   │   ├── index.html
    │   │   ├── task_form.html
    │   │   └── delete_confirm.html
    ├── tests.py
    ├── urls.py
    └── views.py</pre>



<p>ここで、各アプリケーションディレクトリ（↑の例言えば「<code>todo</code>」）の下にある<code>templates</code>ディレクトリには、<strong>そのアプリケーション専用のテンプレートを配置</strong>。</p>



<p>プロジェクト全体で共有するテンプレート（↑の例で言えば「<code>base.html</code>」）はプロジェクトレベルの<code>templates</code>ディレクトリに配置します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><code>settings.py</code>の<code>TEMPLATES</code>設定では<code>DIRS</code>オプションにプロジェクトレベルの<code>templates</code>ディレクトリのパスを含めます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># settings.py
TEMPLATES = [
    {
        ...
        'DIRS': [BASE_DIR / 'templates'],  # BASE_DIRはプロジェクトのルートディレクトリを表す
        ...
    },
]</pre>



<p>このようにすることで、<code>base.html</code>のようなプロジェクト全体で共有するテンプレートを各アプリケーションから参照することが可能になります。</p>
</div></div>



<p>したがって、<code>todo</code>アプリケーションの<code>index.html</code>から<code>base.html</code>を継承するには、以下のように記述すればOKということ。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% extends 'base.html' %}
...</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><code>extends</code>タグで指定するテンプレートファイルの位置は、<code>TEMPLATES</code>設定の<code>DIRS</code>オプションで指定されたディレクトリの下であればどこでもかまいません。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc6">Django：extends/blockのまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center"><strong>テンプレートの継承とは</strong></p>



<ol class="wp-block-list">
<li>テンプレートの継承とは、１つのテンプレート（ベーステンプレート）の構造を他のテンプレート（子テンプレート）が継承することを指す。
<ul class="wp-block-list">
<li>HTMLやテンプレートコードの重複を避け、テンプレートの再利用性と保守性を向上させるための重要な手法。</li>
</ul>
</li>



<li>Djangoでは<code>{% extends %}</code>タグを使用してテンプレートの継承を行う。</li>



<li>ベーステンプレート内で、<code>{% block %}</code>タグを用いて子テンプレートでオーバーライドできるセクションを定義する。</li>
</ol>



<p class="has-text-align-center"><strong>ベーステンプレート</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
    &lt;title>{% block title %}デフォルトタイトル{% endblock %}&lt;/title>
&lt;/head>
&lt;body>
    {% block content %}
    &lt;!-- この部分は子テンプレートでオーバーライド予定 -->
    {% endblock %}
&lt;/body>
&lt;/html></pre>



<p class="has-text-align-center"><strong>子テンプレート</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{% extends "base.html" %}

{% block title %}
ページタイトル
{% endblock %}

{% block content %}
&lt;h1>ページタイトル&lt;/h1>
&lt;p>ここは、ページのコンテンツです。&lt;/p>
{% endblock %}</pre>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPythonを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】モデル（models.py）：初心者向けに３ステップで解説</title>
		<link>https://it-biz.online/python/models/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 03 Jul 2023 12:15:01 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8006</guid>

					<description><![CDATA[Web開発の世界では、データの管理と操作が非常に重要な役割を果たします。PythonのWebフレームワークであるDjangoは、このデータ管理を効率的に行うための強力なツールをモデル（models.py）として提供してい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Web開発の世界では、データの管理と操作が非常に重要な役割を果たします。<a href="https://it-biz.online/python/python-abc/">Python</a>のWebフレームワークであるDjangoは、このデータ管理を効率的に行うための強力なツールを<strong>モデル</strong>（<strong>models.py</strong>）として提供しています。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/django/">Djangoとは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Djangoのモデルは、<a href="https://it-biz.online/it-skills/database/">データベース</a>の構造を定義するためのPythonのクラスで、テーブルのカラムやリレーションを定義します。これにより、データベースとのやり取りが容易になり、データの整合性を保つことが可能となります。</p>
</div></div>



<p>このページでは、Djangoのモデルについて、その基本的な概念から具体的な使用方法まで、初心者向けにわかりやすく解説します。5つのステップを通じて、Djangoのモデルを理解し、効果的に使用する方法を学んでいきましょう。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong>Djangoモデルの基本</strong></li>



<li>Djangoモデルの作成方法</li>



<li>Djangoの主キーモデル</li>
</ul>
</div>
</div></div>



<p>Pythonエンジニア/Djangoを利用したWeb開発者を目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span></strong>。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ステップ1：Djangoモデル（models.py）の基本</a><ol><li><a href="#toc2" tabindex="0">モデルの定義（models.py の定義）</a></li><li><a href="#toc3" tabindex="0">フィールド（項目）の種類</a></li><li><a href="#toc4" tabindex="0">モデルのマイグレーション</a></li></ol></li><li><a href="#toc5" tabindex="0">ステップ2：Djangoモデルの作成方法</a></li><li><a href="#toc6" tabindex="0">ステップ3：Djangoモデルの操作方法</a><ol><li><a href="#toc7" tabindex="0">データの作成</a></li><li><a href="#toc8" tabindex="0">データの取得</a></li><li><a href="#toc9" tabindex="0">データの更新</a></li><li><a href="#toc10" tabindex="0">データの削除</a></li></ol></li><li><a href="#toc11" tabindex="0">Djangoモデル（models.py）のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ステップ1：Djangoモデル（models.py）の基本</span></h2>



<p>Djangoのモデル（models.py）は、アプリケーションのデータを構造化し、Pythonのクラスとして定義します。これにより、データベースとのやり取りが容易になり、データの整合性を保つことが可能になります。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/class-2/">Pythonのクラスの基本</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><strong>と説明されても、なかなかピンと来ない</strong>方も多いはずなので、この章では実際のサンプルコードを見つつ、Djangoモデルの基本的な要素とその役割について深めていきましょう。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">モデルの定義（models.py の定義）</span></h3>



<p>Djangoモデルは、Pythonのクラスとして定義。このクラスは<code><strong>django.db.models.Model</strong></code>を継承します。モデルクラスの各フィールドは、モデルフィールドクラスのインスタンスとして定義され、これがデータベースの<strong><span class="marker-under">各項目</span></strong>を表します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、ブログ投稿を表すモデルを作成する場合、以下のように定義することができます。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文</a></p>



<p>モデルクラスの名前は、通常<strong>表現したいオブジェクトを表す名詞の単数形</strong>を使用。例えば、ブログ投稿を表すモデルを作成する場合、<code>BlogPost</code>という名前を使用します。</p>



<p>モデルクラス内のフィールドは、データベースの各列（カラム）を表します。フィールドの名前はPythonの変数として有効なものであれば何でも構いません。フィールドの型は、そのフィールドがどのようなデータを保存するかをDjangoに伝えます。</p>



<h3 class="wp-block-heading"><span id="toc3">フィールド（項目）の種類</span></h3>



<p>Djangoは多くの種類のフィールドを提供しています。これにより、様々な種類のデータをデータベースに保存することができます。以下に、いくつかの主要なフィールドを示します。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>フィールドタイプ</th><th>用途</th></tr></thead><tbody><tr><td><strong>CharField</strong></td><td>短い文字列<br>max_length（最大長を指定する必要があります）</td></tr><tr><td><strong>TextField</strong></td><td>長い文字列</td></tr><tr><td><strong>DateTimeField</strong></td><td>日付と時間</td></tr><tr><td><strong>IntegerField</strong></td><td>整数</td></tr><tr><td><strong>BooleanField</strong></td><td>真偽値（True/False）</td></tr><tr><td><strong>FloatField</strong></td><td>浮動小数点数</td></tr><tr><td><strong>EmailField</strong></td><td>メールアドレス</td></tr></tbody></table></div></figure>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/data_type/">プログラミング言語におけるデータ型</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これらは一部の例であり、Djangoはこれら以外にも多くのフィールドタイプを提供しています。例えば、<code>ImageField</code>や<code>FileField</code>はファイルのアップロードを扱い、<code>ForeignKey</code>や<code>ManyToManyField</code>はモデル間のリレーションシップを表現します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc4">モデルのマイグレーション</span></h3>



<p>モデルを定義したら、それを<strong><span class="marker-under">データベースに反映する必要</span></strong>があります。これを行うために、Djangoはマイグレーションという機能を提供しています。マイグレーションは、モデルの変更をデータベーススキーマに適用する方法です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>マイグレーションを作成するには、以下のコマンドを実行します。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">python manage.py makemigrations

# Migrations for 'todo':
#   todo/migrations/0003_blogpost.py
#     - Create model BlogPost</pre>



<p>このコマンドを実行すると、Djangoはモデルの変更を追跡し、<strong>それらの変更をマイグレーションファイルに記録</strong>します。次に、以下のコマンドを実行して、これらのマイグレーションをデータベースに適用するという流れ。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">python manage.py migrate

# Operations to perform:
#   Apply all migrations: admin, auth, contenttypes, sessions, todo
# Running migrations:
#   Applying todo.0003_blogpost... OK</pre>



<p>これにより、モデルの変更がデータベーススキーマに反映されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、利用している<a href="https://it-biz.online/it-skills/dbms/">DBMS</a>がMySQLの場合、スキーマ反映後は以下のようにきちんとテーブルが作成されていることが分かります。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mysql> desc todo_blogpost;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | bigint       | NO   | PRI | NULL    | auto_increment |
| title    | varchar(200) | NO   |     | NULL    |                |
| content  | longtext     | NO   |     | NULL    |                |
| pub_date | datetime(6)  | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+</pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/python/django-mysql/" title="【簡単５ステップ】DjangoでMySQLを利用する方法を３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/06/Django-MySQL-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/06/Django-MySQL-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/06/Django-MySQL-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/06/Django-MySQL-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【簡単５ステップ】DjangoでMySQLを利用する方法を３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">DjangoでMySQLを利用するための設定方法を５つのステップに分けて解説します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.08.01</div></div></div></div></a>
</div></figure>



<p>以上が、Djangoモデルの基本的な概念とその使用方法です。次のステップでは、具体的なモデルの作成方法について詳しく見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc5">ステップ2：Djangoモデルの作成方法</span></h2>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>前章ではDjangoモデルの基本的な概念を学びました。今回はその知識を活かし、具体的なモデルの作成方法について見ていきましょう。</p>
</div></div>



<p>Djangoモデルを作成するためには、まず新しいアプリケーションを作成。以下のコマンドを実行して新しいアプリケーションを作成します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">python manage.py startapp your_app_name</pre>



<p>このコマンドを実行すると、<strong>新しいアプリケーションディレクトリが作成</strong>され、その中には<code>models.py</code>というファイルが作成されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この<strong><code>models.py</code>ファイルが、モデルを定義する場所</strong>です。</p>
</div></div>



<p>ブログ投稿を表すモデルを作成する場合、この<code>models.py</code>にモデルを編集することで先ほどのようなテーブルを作成することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>あとは、マイグレーション。マイグレーションを実行する際には、特定のアプリケーションを指定することもできます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">python manage.py makemigrations your_app_name</pre>



<p>このコマンドを実行すると、Djangoは<code>your_app_name</code>アプリケーションのモデルの変更を追跡し、それらの変更をマイグレーションファイルに記録します。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc6">ステップ3：Djangoモデルの操作方法</span></h2>



<p>ここまでで、モデル（models.py）を作成し、データベースに反映する方法を学びました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>次はモデルを使ってデータベースの操作を行う方法について解説します。具体的には、データの作成、取得、更新、削除（CRUD操作）について説明します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">データの作成</span></h3>



<p>Djangoモデルを使って新しいデータを作成するには、モデルクラスのインスタンスを作成し、それを保存。以下に、<code>BlogPost</code>モデルを使って新しいブログ投稿を作成する例を示します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.utils import timezone
from .models import BlogPost

post = BlogPost(title='My first post', content='This is my first post.', pub_date=timezone.now())
post.save()</pre>



<p>この例では、まず<code>BlogPost</code>クラスのインスタンス<code>post</code>を作成しています。<code>BlogPost</code>の括弧内には、各フィールドの初期値を指定。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここでは、<code>title</code>には<code>'My first post'</code>、<code>content</code>には<code>'This is my first post.'</code>、<code>pub_date</code>には現在の日時（<code>timezone.now()</code>）を設定しています。</p>
</div></div>



<p>最後に、<strong><code>save()</code>メソッド</strong>を呼び出すことで、このインスタンスをデータベースに保存しています。この操作により、新しいブログ投稿がデータベースに作成されるという仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc8">データの取得</span></h3>



<p>データベースからデータを取得するには、モデルクラスの<code>objects</code>属性を使用します。<code>objects</code>属性は、モデルクラスに対するデータベースクエリを表すマネージャオブジェクトです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下に、すべてのブログ投稿を取得する例を示します。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">posts = BlogPost.objects.all()</pre>



<p>この例では、<code>BlogPost.objects.all()</code>がすべての<code>BlogPost</code>オブジェクトを返します。この結果はPythonのリスト。つまり、forループを使って各ブログ投稿を順に処理することができる仕組みです。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/python-list/">リストとは？</a> / <a href="https://it-biz.online/python/for-range/">forループとは？</a></p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">条件を指定してデータを取得する</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>モデルクラスの<code>objects</code>属性には、条件を指定してデータを取得するためのメソッドが用意されています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、<code>filter()</code>メソッドを使用すると、指定した条件に一致するすべてのオブジェクトを取得することができます。以下に、タイトルが<code>'My first post'</code>であるすべてのブログ投稿を取得する例を示します。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">posts = BlogPost.objects.filter(title='My first post')</pre>



<p>この例では、<code>filter(title='My first post')</code>がタイトルが<code>'My first post'</code>であるすべての<code>BlogPost</code>オブジェクトを返します。この結果はPythonのリストと同様に扱うことができます。</p>



<p>また、<code>get()</code>メソッドを使用すると、指定した条件に一致する一つのオブジェクトを取得することができます。ただし、<code>get()</code>メソッドは一致するオブジェクトが一つだけであることを期待しています。一致するオブジェクトがない場合や、複数存在する場合にはエラーが発生します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以上のように、Djangoではデータを取得する際に様々な条件を指定することが可能です。これにより、必要なデータだけを効率的に取得することができます。</p>
</div></div>
</div></div>



<h3 class="wp-block-heading"><span id="toc9">データの更新</span></h3>



<p>データを更新するには、<strong>①データを取得</strong>し、<strong>②その属性を変更</strong>し、③再度保存します。以下に、最初のブログ投稿のタイトルを更新する例を示します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">post = BlogPost.objects.get(pk=1)
post.title = 'Updated title'
post.save()</pre>



<p>この例では、まず<strong><code>get()</code>メソッド</strong>を使用して最初のブログ投稿を取得しています。<code>get()</code>メソッドは、指定した条件に一致するオブジェクトをデータベースから取得します。ここでは、主キー（<code>pk</code>）が1のブログ投稿を取得しています。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/primary-key/">主キー（primary key）とは？</a></p>



<p>次に、取得したブログ投稿の<code>title</code>属性を更新し、<code>save()</code>メソッドを呼び出して変更をデータベースに保存しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この操作により、ブログ投稿のタイトルが更新されます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc10">データの削除</span></h3>



<p>データを削除するには、<strong>削除したいオブジェクトを取得し、その<code>delete()</code>メソッドを呼び出します。</strong>以下に、最初のブログ投稿を削除する例を示します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">post = BlogPost.objects.get(pk=1)
post.delete()</pre>



<p>この例では、まず<code>get()</code>メソッドを使用して最初のブログ投稿を取得。次に、<code>delete()</code>メソッドを呼び出してこのブログ投稿をデータベースから削除しています。この操作により、指定したブログ投稿がデータベースから削除されるという流れです。</p>



<p>以上が、Djangoモデルを使ったデータベースの基本的な操作方法です。これらの操作を理解し、適切に使い分けることで、Pythonコードからデータベースを効率的に操作することができるようになります。</p>



<h2 class="wp-block-heading"><span id="toc11">Djangoモデル（models.py）のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<ol class="wp-block-list">
<li><strong>Djangoモデルとは</strong>
<ul class="wp-block-list">
<li>Djangoモデルは、データベースのテーブルをPythonのクラスとして表現したものです。</li>



<li>モデルはデータの構造（フィールド）とそのデータに対する操作（メソッド）を定義します。</li>
</ul>
</li>



<li><strong>モデルの定義</strong>
<ul class="wp-block-list">
<li>モデルは<code>models.py</code>ファイル内に定義します。</li>



<li>モデルクラスは<code>django.db.models.Model</code>を継承します。</li>



<li>モデルのフィールドはクラス変数として定義します。</li>
</ul>
</li>



<li><strong>フィールドの種類</strong>
<ul class="wp-block-list">
<li>Djangoは様々な種類のフィールドを提供しています（例：<code>CharField</code>, <code>TextField</code>, <code>DateTimeField</code>など）。</li>



<li>各フィールドは特定のデータ型を表し、データベースの列（カラム）を定義します。</li>
</ul>
</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')</pre>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>始めてPythonを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】プロジェクトの作成と基本構造を初心者向けに１から解説</title>
		<link>https://it-biz.online/python/project/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Wed, 12 Jul 2023 11:48:48 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8183</guid>

					<description><![CDATA[プロジェクトは、全てのアプリケーション、データベース設定、サードパーティライブラリ、静的ファイルなど、Webサイトやアプリケーションを構成する全ての要素を含む箱のようなもの。 Djangoのプロジェクト構造は、非常に組織 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Web開発において、１つのWebサイトやアプリケーション全体を指し示す用語として「プロジェクト」という言葉が使用されます。</p>
</div></div>



<p>プロジェクトは、全てのアプリケーション、データベース設定、サードパーティライブラリ、静的ファイルなど、<strong><span class="marker-under">Webサイトやアプリケーションを構成する全ての要素を含む箱のようなもの。</span></strong></p>



<p><a href="https://it-biz.online/python/django/">Django</a>のプロジェクト構造は、非常に組織化されていて、特定の規則によって構成されています。これにより、異なる開発者やチーム間で効率的なコーディングが可能になります。</p>



<p>しかし、最初に見たとき、その構造は少々複雑に見えるかもしれません。それぞれのコンポーネントが何をするのか、どうやって連携するのかを理解することは、Djangoで効率的に開発を行うためには不可欠。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページでは、Djangoプロジェクトの各コンポーネントとその機能を一つ一つ解説し、どのように相互に関連し合っているかを説明します。初めてDjangoプロジェクトに取り組む方や、既に始めてみて「このファイルは何をするの？」と思っている方向けにわかりやすくご説明します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>Djangoのプロジェクトとは？</li>



<li>Djangoのプロジェクトの作成方法</li>



<li>Djangoプロジェクトの構成</li>
</ul>
</div>
</div></div>



<p>Djangoを用いたWeb開発を行いたい人であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span>です。</strong>是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Djangoプロジェクトの作成</a><ol><li><a href="#toc2" tabindex="0">settings.py</a></li><li><a href="#toc3" tabindex="0">urls.py</a></li></ol></li><li><a href="#toc4" tabindex="0">Djangoアプリケーション</a><ol><li><a href="#toc5" tabindex="0">Djangoアプリケーションの作成</a></li><li><a href="#toc6" tabindex="0">プロジェクトとアプリケーションの統合</a></li></ol></li><li><a href="#toc7" tabindex="0">Django：プロジェクトのまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Djangoプロジェクトの作成</span></h2>



<p>はじめに、<strong>Djangoプロジェクトの作成方法</strong>を解説します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Djangoプロジェクトの作成は驚くほど簡単です。適切なディレクトリに移動したら、次のコマンドを実行するだけ。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">django-admin startproject myproject</pre>



<p>これで「myproject」という名前の新しいDjangoプロジェクトが作成されます。プロジェクトの名前は任意なので、目的とするWebサイトやWebアプリ用のプロジェクトであることがわかるようにしましょう。</p>



<p>上記のプロジェクト作成を行うと、以下のようなディレクトリが構築されます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この最初に作成されるファイルとディレクトリが、Djangoプロジェクトの基本構造です。ここでは、それぞれのファイルとディレクトリが何を表しているのかは↓の通り。</p>
</div></div>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>ファイル/ディレクトリ</th><th>説明</th></tr></thead><tbody><tr><td><code>manage.py</code></td><td>Djangoの道具箱です。<a href="https://it-biz.online/it-skills/server-abc/">サーバー</a>を立ち上げたり、<a href="https://it-biz.online/it-skills/database/">データベース</a>の操作を行ったりするのに使います。</td></tr><tr><td><code>myproject/__init__.py</code></td><td>このファイルがあることでPythonは<code>myproject</code>を<a href="https://it-biz.online/python/import/">パッケージ</a>（関連するPythonファイルのまとまり）と認識します。普通は何も書かなくてOK。</td></tr><tr><td><code>myproject/<strong>settings.py</strong></code></td><td>プロジェクト全体の設定が書かれています。例えば、使うデータベースの種類や、アプリケーションのリストなどです。</td></tr><tr><td><code>myproject/<strong>urls.py</strong></code></td><td>ここでは、ユーザーがアクセスするURLとそれに対応するコード（ビュー）を結びつけます。目次のようなものです。</td></tr><tr><td><code>myproject/asgi.py</code> and <code>myproject/wsgi.py</code></td><td>これらのファイルは、<a href="https://it-biz.online/it-skills/web-server/">Webサーバー</a>とDjangoの間の通信を助けます。基本的には何も触らなくても大丈夫です。</td></tr></tbody></table></div></figure>



<p>ここでは、特に大事な「<code><strong>settings.py</strong></code>」「<code><strong>urls.py</strong></code>」について詳しくご説明します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これを理解することで、Djangoの「プロジェクト」の概念やイメージがより深まるはずです。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">settings.py</span></h3>



<p>Djangoプロジェクトの心臓部とも言えるのが<code>settings.py</code>ファイルです。ここにはプロジェクト全体に関わる様々な設定が記述されています。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># settings.py

DEBUG = True  # デバッグモードを有効にします。

INSTALLED_APPS = [  # 使用するアプリケーションのリスト
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',  # 自作のアプリケーションもここで指定します。
]

MIDDLEWARE = [  # ミドルウェアのリスト
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'myproject.urls'  # ルートURL設定ファイルの指定

TEMPLATES = [  # テンプレートエンジンの設定
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
    },
]

DATABASES = {  # データベースの設定
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

STATIC_URL = '/static/'  # 静的ファイルへのURLのプレフィックス
STATIC_ROOT = os.path.join(BASE_DIR, 'static')  # 静的ファイルが集められる場所</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文</a> / <a href="https://it-biz.online/python/python-list/">Pythonのリスト</a></p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>設定</th><th>説明</th></tr></thead><tbody><tr><td><code>DEBUG</code></td><td>エラーが起きたときに詳細なエラー情報を表示するかどうかの設定。</td></tr><tr><td><code>INSTALLED_APPS</code></td><td>Djangoプロジェクトで使用するアプリケーションのリスト。自分で作成したアプリケーションやDjangoが用意しているアプリケーションなどをここで指定する。</td></tr><tr><td><code>MIDDLEWARE</code></td><td>リクエストとレスポンスを処理する際に、特定の処理を挟むためのミドルウェアのリスト。セキュリティ関連の処理やセッション管理などに使われる。</td></tr><tr><td><code>ROOT_URLCONF</code></td><td>プロジェクトのルートURL設定を行うファイルを指定。通常は<code>&lt;プロジェクト名&gt;.urls</code>が指定される。</td></tr><tr><td><code>TEMPLATES</code></td><td>テンプレートエンジンの設定。DjangoではデフォルトでDjangoテンプレートエンジンが使われるが、必要に応じて他のエンジンを使用することも可能。</td></tr><tr><td><code>DATABASES</code></td><td>使用するデータベースの設定。DjangoはデフォルトでSQLiteを使用するが、PostgreSQLやMySQLなど他のデータベースを使用することも可能。（<span class="badge-green">関連</span>　<a href="https://it-biz.online/python/django-mysql/">MySQLをDBとして利用する方法</a>）</td></tr><tr><td><code>STATIC_URL</code> and <code>STATIC_ROOT</code></td><td>静的ファイル（CSSやJavaScriptなど）の設定。<code>STATIC_URL</code>は静的ファイルへのURLのプレフィックスを、<code>STATIC_ROOT</code>はcollectstaticコマンドで静的ファイルが集められる場所を指定。</td></tr></tbody></table></div></figure>



<p>このように、<code>settings.py</code>ファイルには様々な設定項目が存在し、それぞれの設定がDjangoプロジェクトの挙動を決定します。</p>



<h3 class="wp-block-heading"><span id="toc3">urls.py</span></h3>



<p>Djangoでは、ユーザーが指定したURLをクリックした際にどの画面に遷移させるか？（※どのビューを呼び出すか？）を設定します。その設定を行うのがurls.pyです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これをURLルーティングとも呼びます。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># urls.py

from django.urls import path
from . import views  # このプロジェクトのビューをインポート

urlpatterns = [
    path('', views.home, name='home'),  # ホームページ
    path('about/', views.about, name='about'),  # "about" ページ
    path('contact/', views.contact, name='contact'),  # "contact" ページ
]</pre>



<p>このコードの<code>urlpatterns</code>というリストには、それぞれのURLパターンとそれに対応するビューが設定されています。</p>



<p>たとえば、<code>path('about/', views.about, name='about')</code>という行では、ユーザーがWebサイトの"/about"というURLにアクセスしたときに<code>views.about</code>というビューを表示するよう指定しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>urls.py の基本や設定方法の詳細は以下の記事で解説しております。この機会に詳しく学習しておきたい方は以下をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/python/urls-py/" title="【Django】urls.py の仕組み・使い方のコツを３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/07/urls-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/07/urls-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/07/urls-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/07/urls-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Django】urls.py の仕組み・使い方のコツを３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】Djangoのurls.pyの基本的な概念・実践的な使い方を、シンプルで実用的なサンプルコードと共に分かりやすく解説します。DjangoのURLパターン、動的URLパターン、名前付きURLパターン、そしてURL名前空間の意味と役割を把握し、コーディングの効率を向上させましょう。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.07.12</div></div></div></div></a>
</div></figure>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">Djangoアプリケーション</span></h2>



<p>Djangoプロジェクトは、その全体を構成する複数のアプリケーションから成り立っています。</p>



<p>アプリケーションとは、Webサイトの特定の機能（例えばToDo管理、ニュース配信、レポート機能）を実装するための部品のようなもの。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="905" height="320" src="https://it-biz.online/wp-content/uploads/2023/07/image-12.png" alt="" class="wp-image-8185" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-12.png 905w, https://it-biz.online/wp-content/uploads/2023/07/image-12-300x106.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-12-500x177.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-12-768x272.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-12-800x283.png 800w" sizes="(max-width: 905px) 100vw, 905px" /><figcaption class="wp-element-caption">図1：プロジェクトとアプリケーション</figcaption></figure>



<p>アプリケーションはそれぞれが特定の機能を提供し、複数のアプリケーションが組み合わさることで、大きなWebサイトを構成。これにより、Djangoは非常にスケーラブル（拡張可能）なフレームワークとなっています。</p>



<h3 class="wp-block-heading"><span id="toc5">Djangoアプリケーションの作成</span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Djangoでは、新しいアプリケーションを作成するために<code>startapp</code>コマンドを使用します。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$ python manage.py startapp myapp</pre>



<p>このコマンドを実行すると、<code>myapp</code>という名前の新しいDjangoアプリケーションが作成されます。そして、その中には以下のような一連のファイルが自動的に生成されます。</p>



<figure class="wp-block-table"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>ファイル名</th><th>説明</th></tr></thead><tbody><tr><td><code><a href="https://it-biz.online/python/models/">models.py</a></code></td><td>データベースのスキーマ（テーブルとそのフィールド）を定義します。これらの定義はDjangoのORM（Object-Relational Mapping）によりPythonのクラスとして扱われます。</td></tr><tr><td><code><a href="https://it-biz.online/python/views/">views.py</a></code></td><td>ユーザーに表示するページ（ビュー）を制御するためのロジックを記述します。ビューはユーザーのリクエストに対するレスポンスを決定します。</td></tr><tr><td><code><a href="https://it-biz.online/python/urls-py/">urls.py</a></code></td><td>アプリケーションのURLルーティングを定義します。特定のURLパスがどのビューに対応するのかをマッピングします。</td></tr><tr><td><code>admin.py</code></td><td>Djangoの管理者ページでこのアプリケーションのモデルをどのように表示するかを定義します。</td></tr><tr><td><code>apps.py</code></td><td>アプリケーションの設定情報が格納されています。通常は自動生成され、特別な設定が必要ない限り変更する必要はありません。</td></tr><tr><td><code>tests.py</code></td><td>アプリケーションのテストコードを記述します。Djangoは組み込みのテストフレームワークを提供しているため、ここにテストを書くことで自動テストが可能です。</td></tr><tr><td><code>migrations/</code></td><td>データベースのスキーマの変更を追跡するためのディレクトリです。<code>models.py</code>の変更に応じてマイグレーションファイルが生成され、これによりデータベースのバージョン管理が可能になります。</td></tr></tbody></table></div></figure>



<p>これらの各ファイルはアプリケーションの特定の機能を担当し、それらがうまく連携することでアプリケーション全体が機能する仕組み。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>それぞれの詳細はリンクから内容を確認してください。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">プロジェクトとアプリケーションの統合</span></h3>



<p>新しいアプリケーションを作成したら、それをプロジェクトに統合する必要があります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>具体的には、プロジェクトの<code>settings.py</code>ファイル内の<code>INSTALLED_APPS</code>設定に新しく作成したアプリケーションの名前を追加することで行います。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># settings.py

INSTALLED_APPS = [
    # ...
    'myapp',  # 新しく作成したアプリケーションを追加
]</pre>



<p>以上がDjangoのアプリケーションについての基本的な知識です。各アプリケーションが提供する機能を組み合わせることで、大きなDjangoプロジェクトを作り上げることが可能になります。</p>



<h2 class="wp-block-heading"><span id="toc7">Django：プロジェクトのまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p><span class="badge-blue">ポイント１</span>　Djangoプロジェクトとは、１つのWebアプリケーション全体を指す。</p>



<p><span class="badge-blue">ポイント２</span>　Djangoプロジェクトの主要なディレクトリ構造は以下のようになる。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">- manage.py
- プロジェクト名/
  - __init__.py
  - settings.py
  - urls.py
  - asgi.py or wsgi.py</pre>



<p><span class="badge-blue">ポイント３</span>　Djangoアプリケーションはプロジェクト内の個々の機能を表すモジュールで、以下のディレクトリ構造を持つ。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">- アプリケーション名/
  - __init__.py
  - models.py
  - views.py
  - urls.py
  - admin.py
  - apps.py
  - tests.py
  - migrations/</pre>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPythonを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】urls.py の仕組み・使い方のコツを３分で解説</title>
		<link>https://it-biz.online/python/urls-py/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Thu, 06 Jul 2023 03:45:19 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8024</guid>

					<description><![CDATA[Djangoの中心的な要素であるurls.pyは、ユーザがアクセスしたURLを適切なビュー関数に接続する役割を担います。 参考　Django：ビュー関数（views.py）とは？ Pythonエンジニア/Djangoを利 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://it-biz.online/python/django/">Django</a>の中心的な要素である<code><strong>urls.py</strong></code>は、<strong><span class="marker-under">ユーザがアクセスしたURLを適切なビュー関数に接続する役割</span></strong>を担います。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="372" src="https://it-biz.online/wp-content/uploads/2023/07/image-3-1024x372.png" alt="Django urls.py" class="wp-image-8028" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-3-1024x372.png 1024w, https://it-biz.online/wp-content/uploads/2023/07/image-3-300x109.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-3-500x182.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-3-768x279.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-3-800x291.png 800w, https://it-biz.online/wp-content/uploads/2023/07/image-3.png 1064w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図1：URLパターン</figcaption></figure>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/views/">Django：ビュー関数（views.py）とは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この記事では、<code>urls.py</code>の設定方法と、DjangoのURLルーティングがどのように動作するかを詳しく解説。Djangoアプリケーションを利用し、適切なURL設計を行うための知識を深めていきましょう。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>Django URLパターン: 基本概念
<ul class="wp-block-list">
<li><code>urls.py</code>とは何か？</li>



<li>URLパターンの基本的な書き方</li>
</ul>
</li>



<li>動的URLパターン</li>



<li>名前付きURLパターン</li>



<li>URL名前空間</li>



<li>最適なURL設計とベストプラクティス</li>
</ul>
</div>
</div></div>



<p>Pythonエンジニア/Djangoを利用したWeb開発者を目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span></strong>。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Django：URLパターンの基本</a><ol><li><a href="#toc2" tabindex="0">Django urls.py とは</a></li><li><a href="#toc3" tabindex="0">path関数</a></li><li><a href="#toc4" tabindex="0">re_path関数</a></li></ol></li><li><a href="#toc5" tabindex="0">Django：動的URLパターン</a></li><li><a href="#toc6" tabindex="0">名前付きURLパターン</a><ol><li><a href="#toc7" tabindex="0">URL名前空間</a></li></ol></li><li><a href="#toc8" tabindex="0">Django urls.py のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Django：URLパターンの基本</span></h2>



<p>DjangoにおけるURLパターンの設定は、<strong><span class="marker-under">Webアプリケーションがユーザーのリクエストにどのように応答するかを定義する重要な設定</span></strong>です。このセクションでは、<code>urls.py</code>ファイルの役割と、基本的なURLパターンの作り方を解説します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">URLパターンとは？</span></div><div class="tab-caption-box-content block-box-content box-content">
<p><strong>URLパターン</strong>とは、Djangoがどの<a href="https://it-biz.online/python/views/">ビュー関数</a>を呼び出すかを判断するために使用するURLのルールまたはテンプレートのことを指します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>URLパターンは、Djangoの<code><strong><span class="marker-under">urls.py</span></strong></code>ファイル内で定義され、アプリケーションがブラウザからのリクエストをどのビューにルーティングするかを定義します。</p>
</div></div>



<p>例えば、あなたがブログ投稿アプリを開発しているとします。</p>



<p>ユーザーが個々のブログ記事を読むためには、それぞれの記事に対応するURLにアクセスする必要があります。URLパターンは、このとき、どのURLがどのビュー（つまり、どの記事）にマッチするかをDjangoに伝える役割を果たすようなイメージ。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="372" src="https://it-biz.online/wp-content/uploads/2023/07/image-3-1024x372.png" alt="Django urls.py" class="wp-image-8028" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-3-1024x372.png 1024w, https://it-biz.online/wp-content/uploads/2023/07/image-3-300x109.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-3-500x182.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-3-768x279.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-3-800x291.png 800w, https://it-biz.online/wp-content/uploads/2023/07/image-3.png 1064w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図1：URLパターン</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記の例で言うと、/AAA というURLをクリックされたら、View A を呼び出すような設定を行っているということ。</p>
</div></div>



<p>この章では上記URLパターンの定義（urls.py）の利用方法・基本を解説します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">Django urls.py とは</span></h3>



<p>Djangoにおける<code><strong>urls.py</strong></code>ファイルは、ユーザーのブラウザからのリクエスト（URL）を適切なビュー関数にルーティングするための"地図"の役割を果たします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>簡単に言うと、<code>urls.py</code>はDjangoがユーザーのリクエストをどのように処理すべきかを指示するためのファイルです。</p>
</div></div>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="508" src="https://it-biz.online/wp-content/uploads/2023/07/image-2-1024x508.png" alt="Django urls.py" class="wp-image-8027" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-2-1024x508.png 1024w, https://it-biz.online/wp-content/uploads/2023/07/image-2-300x149.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-2-500x248.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-2-768x381.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-2-800x397.png 800w, https://it-biz.online/wp-content/uploads/2023/07/image-2.png 1063w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図2：Django urls.py</figcaption></figure>



<p><code>urls.py</code>ファイルはPythonのリスト　<code>urlpatterns</code>　を含んでいます。その中に<strong><code>path()</code>関数</strong>を使ったURLパターンが列挙されています。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/python-list/">Python：リストとは？</a> / <a href="https://it-biz.online/python/def/">関数とは？</a></p>



<p>以下が基本的な<code>urls.py</code>ファイルのサンプルコード。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記のコードでは、URLが<code>http://yourwebsite.com/</code>（空のパス）であった場合、<code>views.home</code>というビュー関数が呼び出されるように指示しています。</p>
</div></div>



<p>上記のコードを完全に理解するためには、path関数の使い方をマスターしている必要があります。ここで、path関数の使い方をご説明します。</p>



<h3 class="wp-block-heading"><span id="toc3">path関数</span></h3>



<p><code>path</code>関数の基本的な利用方法は以下の通り。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">path(route, view, kwargs=None, name=None)</pre>



<p class="has-text-align-center is-style-clip-box has-box-style"><strong>path関数の引数</strong></p>



<ul class="wp-block-list">
<li><code><span class="bold-blue">route</span></code>：URLパターンを表す文字列。このパターンがユーザーからのリクエストと一致した場合、指定されたビューが呼び出される。</li>



<li><code><span class="bold-blue">view</span></code>：上記の<code>route</code>がマッチしたときに呼び出されるビュー関数。ビュー関数はユーザーのリクエストを処理し、レスポンスを生成する。</li>



<li><code><span class="bold-blue">kwargs</span></code>：任意のキーワード引数をビューに<a href="https://it-biz.online/python/python-dictionary/">辞書</a>として渡す（必須ではありません）。</li>



<li><code><span class="bold-blue">name</span></code>：URLパターンに名前をつけるためのもので、テンプレート内などから参照できます（必須ではありません）。</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記を踏まえて、再度サンプルコードを見てみましょう。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path
from . import views

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
    path('articles/&lt;int:article_id>/', views.article_detail, name='article_detail'),
]</pre>



<p>↑のサンプルコードでは、２つの<code>path</code>関数が使われています。</p>



<p>1つ目の<code>path</code>関数は、<code>'articles/'</code>というURLパターンがマッチした場合に<code>views.article_list</code>というビュー関数を呼び出します。</p>



<p>2つ目の<code>path</code>関数は、<code>'articles/&lt;int:article_id&gt;/'</code>というURLパターンがマッチした場合に<code>views.article_detail</code>というビュー関数を呼び出します。このURLパターンは、特定の記事の詳細を表示するためのもので、<code>&lt;int:article_id&gt;</code>という部分は動的な部分（パスコンバータと呼ばれます）で、この部分には記事のIDが入ります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>動的URLについては後ほど詳しく解説します。ここでは、path関数の使い方とその役割が理解できればOK。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc4">re_path関数</span></h3>



<p><code>path()</code>関数は非常に直感的にURLパターンを記述することが可能です。しかし、複雑なURLパターンを記述する必要がある場合に備えて、Djangoはより強力なツール<code><strong>re_path()</strong></code>関数を提供しています。</p>



<p>この関数は<strong><span class="marker-under">Pythonの正規表現を用いてURLパターンを記述する</span></strong>ことを可能にします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><code>re_path()</code>関数の基本的な利用方法は以下の通り。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">re_path(route, view, kwargs=None, name=None)</pre>



<p>この<strong>引数は<code>path()</code>関数のものと同じ</strong>ですが、この際「<code>route</code>」は<strong><span class="marker-under">正規表現を使用した文字列</span></strong>となります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^articles/$', views.article_list, name='article_list'),
]</pre>



<p><code>re_path()</code>関数は、<code>'^articles/$'</code>というURLパターンがマッチした場合に<code>views.article_list</code>というビュー関数を呼び出します。ここで<code><span class="bold-blue">^</span></code>は文字列の先頭、<code><span class="bold-blue">$</span></code>は文字列の末尾を意味し、このパターンは<code>articles/</code>というURLにのみマッチします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>正規表現はうまく利用することで非常に便利なツールとなりますが、その分複雑で覚えることがたくさんあります。しかし、DjangoのURLディスパッチャで正規表現を理解しておくと、より複雑なURLマッチングを柔軟に行うことが可能になるので、この点も頭に入れておくと便利です。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc5">Django：動的URLパターン</span></h2>



<p>Djangoの強力な特性の1つ。それが、<strong>URLパターンを動的に生成できる</strong>ことです。これにより、一定のルールに基づいて可変的なURLを作成でき、各URLが特定のビューと一致するようにすることができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、ブログ記事の個々のページを表示するためのURLを生成する必要があるとします。記事が何千もある場合、それぞれの記事に対して固定のURLパターンを作成するのは非現実的です。ここで動的URLパターンの利点が生きてきます。</p>
</div></div>



<p>具体的には、<strong>URL内の特定の部分をプレースホルダとして扱い</strong>、それをビューに渡す引数として利用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">path('articles/&lt;int:article_id>/', views.article_detail, name='article_detail'),</pre>



<p>ここでは、<code><span class="bold-blue">&lt;int:article_id&gt;</span></code>　の部分が動的URLパターンに該当します。</p>



<p>このパターンは、"articles/"に続く<strong>整数</strong>を<code><strong>article_id</strong></code>として取り扱います。そしてこの<code>article_id</code>が<code>article_detail</code>ビューに引数として渡され、そのビュー関数内で特定の記事の詳細を取得するのに使用されるという仕組み。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように動的URLパターンを使用することで、一つのURLパターンとビューが、任意の数の記事詳細ページを処理できるようになります。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">ビュー関数で動的URLパターンを受け取る方法</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>先ほどのpath関数を、ビュー関数で受け取るには以下のように記述します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">def article_detail(request, article_id):
    # ...</pre>



<p><code>article_detail</code>ビュー関数は2つの引数を受け取ります。１つ目の<code>request</code>はDjangoから自動的に渡されるHttpRequestオブジェクトで、２つ目の<span class="marker-under"><code>article_id</code>はURLから渡されるパラメータ</span>ーです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この<code>article_id</code>を使うことで、例えばデータベースから特定の記事を取得することができます。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.shortcuts import get_object_or_404
from .models import Article

def article_detail(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    # ...

# ここではget_object_or_404関数を使用して
# IDに基づいてArticleオブジェクトを取得。</pre>
</div></div>



<h2 class="wp-block-heading"><span id="toc6">名前付きURLパターン</span></h2>



<p>Djangoのurls.pyでは、<strong>個々のURLパターンに名前をつけることができます</strong>。</p>



<p>名前をつけると、プロジェクト全体でそのURLを一意に参照することができ、テンプレートやビュー、あるいはリダイレクトの中でその名前を利用してURLを逆引きすることが可能になります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">path('articles/&lt;int:article_id>/', views.article_detail, name='article_detail'),</pre>



<p>この例では、<code>name='article_detail'</code>としてURLパターンに名前をつけています。これにより、他の場所から<code>'article_detail'</code>という名前でこのURLパターンを参照できます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>たとえば、ビュー内で<code>redirect</code>関数を使用してリダイレクトを行う場合、URLの名前を使用することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.shortcuts import redirect

def create_article(request):
    # ...
    return redirect('article_detail', article_id=new_article.id)</pre>



<p>上記は、新規記事を作成した後その記事の詳細ページにリダイレクトさせるサンプルコードです。</p>



<p>ここでは、<code>redirect</code>関数にURLパターンの名前と、必要なパラメーター（この場合は<code>article_id</code>）を渡すことで、狙ったURLにリダイレクトさせています。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">URL名前空間</span></h3>



<p>大規模なDjangoプロジェクトでは、アプリケーションごとにURL設定を分けることが一般的。</p>



<p>このとき、<strong>異なるアプリケーション間でURLの名前が衝突しないようにするため</strong>に、URL名前空間を利用します。URL名前空間は、<strong><span class="marker-under">アプリケーションごとにURLの名前を分ける概念</span></strong>であり、それぞれのアプリケーションが独自の"スペース"を持つことを可能にします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>具体的にURL名前空間を利用するには、各アプリケーションの<code>urls.py</code>で<code>app_name</code>という変数を設定します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">app_name = 'blog'
urlpatterns = [
    path('articles/&lt;int:article_id>/', views.article_detail, name='article_detail'),
    # ...
]</pre>
</div></div>



<p>ここでは、<code>app_name</code>に<code>'blog'</code>という名前を設定しました。これにより、この<code>urls.py</code>で定義されるURLパターンは全て<code>'blog'</code>という名前空間に所属します。</p>



<p>この<code>'blog'</code>という名前空間に属したURLの逆引きを行う際には、<code>'namespace:name'</code>という形式でURLの名前を指定します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">return redirect('blog:article_detail', article_id=new_article.id)</pre>



<p>この例では、<code>redirect</code>関数に<code>'blog:article_detail'</code>という名前を渡しています。この名前は、<code>'blog'</code>という名前空間の<code>'article_detail'</code>というURLを指しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このようにURL名前空間を使用することで、複数のアプリケーション間でURLの名前が衝突することなく、各アプリケーションが独立してURL設定を行うことができます。これにより、大規模なプロジェクトでもURLの管理が容易になります。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc8">Django urls.py のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<ol class="wp-block-list">
<li><strong><span class="bold-blue">Django URLパターン</span></strong> Djangoでは、URLパターンを用いて特定のURLがどのビュー関数にマッピングされるかを定義。<code>path</code>関数を利用したシンプルな文字列マッチングか、<code>re_path</code>関数を利用した正規表現マッチングを利用可能。</li>



<li><strong><span class="bold-blue">動的URLパターン</span></strong> パスコンバータを用いてURLから特定のパラメータを抽出し、それをビュー関数に渡すことが可能。</li>



<li><strong><span class="bold-blue">名前付きURLパターン</span></strong> 各URLパターンに名前を付けることで、そのURLをプロジェクト全体で一意に参照することが可能。これにより、URLの変更があったときにも、その名前を使っているすべての場所で自動的に新しいURLに更新される。</li>



<li><strong><span class="bold-blue">URL名前空間</span></strong> 名前空間を設定することで、複数のアプリケーション間でURLの名前が衝突することを避け、各アプリケーションが独立してURL設定を行うことが可能。</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">## urls.py
from django.urls import path
from . import views

app_name = 'blog'
urlpatterns = [
    path('articles/&lt;int:article_id>/', views.article_detail, name='article_detail'),
]

## views.py
from django.shortcuts import render, get_object_or_404
from .models import Article

def article_detail(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    return render(request, 'blog/article_detail.html', {'article': article})</pre>



<p class="has-text-align-center"><span class="badge-green">関連</span>　<a href="https://it-biz.online/python/template/">Djangoテンプレート</a> / <a href="https://it-biz.online/python/render/">render関数</a></p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPythonを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】render関数の使い方をわかりやすく３分で解説</title>
		<link>https://it-biz.online/python/render/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 10 Jul 2023 11:30:08 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8152</guid>

					<description><![CDATA[Djangoのrender関数とは、HTTPリクエストを受け取り、指定されたテンプレートとデータを使用してHTML形式のHTTPレスポンスを生成する役割を担います。 参考　HTTPリクエスト/レスポンス このページではr [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://it-biz.online/python/django/">Django</a>の<code>render</code>関数とは、HTTPリクエストを受け取り、指定されたテンプレートとデータを使用してHTML形式のHTTPレスポンスを生成する役割を担います。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/http/">HTTPリクエスト/レスポンス</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>簡単に言えば、render関数はクライアントからのリクエストに対して<strong><span class="marker-under">動的にHTMLを生成</span></strong>し、それをレスポンスとして返すための関数。</p>
</div></div>



<p>このページではrender関数の使い方を初心者向けに１からわかりやすくサンプルコード付きでご説明します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>render関数の使い方・構文ルール
<ul class="wp-block-list">
<li>Djangoのビュー（views.py）</li>



<li>Djangoのテンプレート</li>
</ul>
</li>



<li>render関数を利用する際の注意点</li>
</ul>
</div>
</div></div>



<p>Python/Djangoエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/rule/">Pythonの基本的な書き方・構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Django：render関数とは？</a><ol><li><a href="#toc2" tabindex="0">render関数の構文ルール</a></li><li><a href="#toc3" tabindex="0">render関数の使い方とコツ</a></li></ol></li><li><a href="#toc4" tabindex="0">render関数を利用する際の注意点</a></li><li><a href="#toc5" tabindex="0">Django：render関数のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Django：render関数とは？</span></h2>



<p>Djangoの<code>render</code>関数は、HTTPリクエストを処理して、<span class="marker-under">テンプレートを使ってHTTPレスポンスを作成するのに使用</span>されます。<code>render</code>関数はDjangoのテンプレートシステムと強力に統合されており、テンプレートを使ってHTMLを生成することができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>render関数を理解するためには、Djangoの「テンプレート」の基本知識を有している必要があります。テンプレートって何？という方は以下の記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/python/template/" title="【Django】テンプレートの仕組みと基本を３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/07/template-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/07/template-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/07/template-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/07/template-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Django】テンプレートの仕組みと基本を３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】Djangoテンプレートの基本を３分で理解するためのガイド。テンプレートの概念、テンプレート変数とテンプレートタグの使用方法について簡潔に説明します。手に取るように理解できる具体的なコード例も提供。DjangoでのWeb開発に必要な知識を素早く身につけましょう。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.08.02</div></div></div></div></a>
</div></figure>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">render関数の構文ルール</span></h3>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">render(request, template_name, context)</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/def/">Python関数の使い方・基本</a></p>



<ol class="wp-block-list">
<li><code><span class="bold-blue">request</span></code>：ビュー関数に渡すHTTPリクエストオブジェクト</li>



<li><code><span class="bold-blue">template_name</span></code>：描画するテンプレートの名前</li>



<li><code><span class="bold-blue">context</span></code>：テンプレートに渡すデータを含む<a href="https://it-biz.online/python/python-dictionary/">辞書</a>（キーと値のペア）</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>基本的な構文ルールは上記の通り。実際のサンプルコードを見ていきながら、それぞれの引数の役割、Djangoにおけるrender関数の使い方を確認していきましょう。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">render関数の使い方とコツ</span></h3>



<p>Djangoの<code>render</code>関数は主に<code><strong>views.py</strong></code>の中で利用されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Djangoのビュー（views.py）の基本は以下の記事を参照してください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/python/views/" title="【Django】ビュー（views.py）：初心者向けに５ステップで解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/07/views-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/07/views-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/07/views-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/07/views-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Django】ビュー（views.py）：初心者向けに５ステップで解説</div><div class="blogcard-snippet internal-blogcard-snippet">Djangoのビューについての基本的な概念から詳細な手順までを網羅的に解説します。関数ベースビュー、クラスベースビュー、汎用ビュー、ビューのテストについて学びます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.07.10</div></div></div></div></a>
</div></figure>
</div></div>



<p>ビュー関数（クラスベースのビューのメソッド）はHTTPリクエストを受け取り、HTTPレスポンスを返す役割を担います。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="639" height="236" src="https://it-biz.online/wp-content/uploads/2023/07/image-7.png" alt="" class="wp-image-8156" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-7.png 639w, https://it-biz.online/wp-content/uploads/2023/07/image-7-300x111.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-7-500x185.png 500w" sizes="(max-width: 639px) 100vw, 639px" /><figcaption class="wp-element-caption">図1：Djangoのビュー</figcaption></figure>



<p>↑を実現するためにviews.py中で利用されるのが、<code>render</code>関数。<code>render</code>関数は、テンプレートをレンダリングし、その結果をHTTPレスポンスとして返します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># myapp/views.py

from django.shortcuts import render

def some_view(request):
    context = {"key": "value"}  # テンプレートに渡すためのデータ
    return render(request, "template_name.html", context)</pre>



<ol class="wp-block-list">
<li><code><span class="bold-blue">request</span></code>：HTTPリクエスト</li>



<li><span class="bold-blue">テンプレート名</span>：描画する<a href="https://it-biz.online/python/template/">テンプレート</a>の名前。ここでは<code>template_name.html</code>としています。Djangoは設定で指定されたテンプレートディレクトリを検索し、この名前のテンプレートを探します。</li>



<li><code><span class="bold-blue">context</span></code>：テンプレートに渡す<a href="https://it-biz.online/python/python-dictionary/">辞書</a>。テンプレート内でこれらの値を変数として使用することができます。</li>
</ol>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文</a> / <a href="https://it-biz.online/python/def/">def文</a></p>



<p>上記の例では、まず<code>django.shortcuts</code>から<strong><code>render</code>関数をインポート</strong>。続いて、<code>some_view</code>というビュー関数を定義しています。そして、<code>render</code>関数はテンプレートと<code>context</code>を使ってHTMLを生成し、そのHTMLを含むHTTPレスポンスオブジェクトを返します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ざっくり図解するとrender関数の役割は以下のようなイメージ。</p>



<p>指定されたビューが呼び出されると<strong><span class="marker-under">事前に定義したrender関数が、画面を描画するための情報を整理しレスポンス</span></strong>するような形です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="866" height="352" src="https://it-biz.online/wp-content/uploads/2023/07/image-8.png" alt="Django render関数" class="wp-image-8157" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-8.png 866w, https://it-biz.online/wp-content/uploads/2023/07/image-8-300x122.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-8-500x203.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-8-768x312.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-8-800x325.png 800w" sizes="(max-width: 866px) 100vw, 866px" /><figcaption class="wp-element-caption">図2：Django render関数</figcaption></figure>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">render関数を利用する際の注意点</span></h2>



<p>Django初心者が躓きやすいrender関数の注意点を以下に整理します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記の通りにコーディングしても、Djangoでうまく画面表示ができない・・・という方は以下のポイントをチェックしましょう！</p>
</div></div>



<ol class="wp-block-list">
<li><strong><span class="marker-under">テンプレートの場所</span></strong>: Djangoは設定ファイル（<code>settings.py</code>）で指定されたディレクトリからテンプレートとなるHTMLファイルを探します。そのため、テンプレートを適切な場所に配置していないと、Djangoはそれを見つけられずにエラーとなります。</li>



<li><strong><span class="marker-under">テンプレート変数の名前</span></strong>: コンテキストの辞書のキーは、テンプレート内での変数名として使用されます。これらの名前はテンプレート内で衝突しないように、適切に選ぶことが重要。</li>



<li><strong><span class="marker-under">存在しない変数の扱い</span></strong>: Djangoテンプレートでは、存在しない変数にアクセスした場合にはデフォルトで何も表示されず、エラーも出ません。これは意図しない結果をもたらす可能性があるので注意が必要。</li>



<li><strong><span class="marker-under">リクエストオブジェクトの引き渡し</span></strong>: <code>render</code>関数の最初の引数は、現在処理中のHTTPリクエストオブジェクトでなければなりません。これを忘れると、Djangoはエラーを返します。</li>



<li><strong><span class="marker-under">エスケープと安全性</span></strong>: Djangoテンプレートシステムは、デフォルトで変数の内容をHTMLエスケープします。これはセキュリティ対策として重要な機能ですが、エスケープしたくない場合には<code>safe</code>フィルタを使うなどの対策が必要です。</li>
</ol>



<p>以上のような点に注意しながら<code>render</code>関数を使用することで、エラーを防ぎ、期待通りの動作を得ることができるでしょう。</p>



<h2 class="wp-block-heading"><span id="toc5">Django：render関数のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下のサンプルコードは、シンプルなDjangoのWebアプリケーションの一部として、<code>render</code>関数の使い方を示しています。</p>
</div></div>



<p class="has-text-align-center is-style-border-left-box has-box-style"><strong>urls.py</strong>（<code>ディレクトリ/urls.py</code>というパスに配置）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path
from . import views  # 同じディレクトリのviews.pyをインポート

urlpatterns = [
    path('', views.home, name='home'),  # ルートURL（http://yourdomain/）へのアクセスをviews.home関数にマッピング
]</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/urls-py/">urls.pyの役割</a></p>



<p class="has-text-align-center is-style-border-left-box has-box-style"><strong>views.py</strong>（<code>ディレクトリ/views.py</code>というパスに配置）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.shortcuts import render

def home(request):
    # 'home.html'というテンプレートを描画し、コンテキストとして空の辞書を渡す
    return render(request, 'home.html', {})</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/views/">views.pyの役割</a></p>



<p class="has-text-align-center is-style-border-left-box has-box-style"><strong>home.html</strong>（<code>ディレクトリ/templates/home.html</code>というパスに配置）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html>
&lt;html>
&lt;head>
    &lt;title>ホームページ&lt;/title>
&lt;/head>
&lt;body>
    &lt;h1>ようこそ、Djangoのホームページへ！&lt;/h1>
&lt;/body>
&lt;/html></pre>



<p>この例では、ユーザがルートURL（例えばhttp://localhost:8000/）にアクセスすると、<code>home</code>ビュー関数が呼び出されます。この関数では、<code>render</code>関数を使用して<code>home.html</code>テンプレートを描画し、その結果をHTTPレスポンスとして返します。</p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPython/Djangoを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【Django】ビュー（views.py）：初心者向けに５ステップで解説</title>
		<link>https://it-biz.online/python/views/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 04 Jul 2023 04:27:12 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8011</guid>

					<description><![CDATA[Djangoにおけるビュー（views.py）は、ユーザーからのリクエストを受け取り、それに基づいたレスポンスを生成するコンポーネントです。言い換えると、ユーザーとアプリケーションの間のインターフェースの役割を果たすのが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://it-biz.online/python/django/">Django</a>における<strong>ビュー（views.py）</strong>は、ユーザーからのリクエストを受け取り、それに基づいたレスポンスを生成するコンポーネントです。言い換えると、ユーザーとアプリケーションの間のインターフェースの役割を果たすのがビューです。</p>



<p>この記事では、Djangoのビュー（views.py）について、初心者でも理解できるように詳しく解説します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>具体的には、ビューの基本的な作成方法から、より高度な<strong>リストビュー</strong>や<strong>フォームビュー</strong>の活用方法までを、5つのステップに分けて学んでいきます。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong>ステップ1：ビューとは</strong></li>



<li><strong>ステップ2：関数ベースビューの作成</strong></li>



<li><strong>ステップ3：クラスベースビューの作成</strong></li>



<li><strong>ステップ4：汎用ビューの活用</strong>
<ul class="wp-block-list">
<li>リストビュー</li>



<li>ディテールビュー</li>



<li>フォームビュー</li>
</ul>
</li>



<li><strong>ステップ5：ビューのテスト方法</strong></li>
</ul>
</div>
</div></div>



<p>Pythonエンジニア/Djangoを利用したWeb開発者を目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span></strong>。是非最後までご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Djangoのビュー（view）とは？</a></li><li><a href="#toc2" tabindex="0">関数ベースビューの作成</a></li><li><a href="#toc3" tabindex="0">クラスベースビューの作成</a></li><li><a href="#toc4" tabindex="0">クラスベースビューの拡張（汎用ビューの活用）</a><ol><li><a href="#toc5" tabindex="0">Django：ListView</a></li><li><a href="#toc6" tabindex="0">Django：DetailView</a></li><li><a href="#toc7" tabindex="0">Django：CreateView</a></li><li><a href="#toc8" tabindex="0">Django：UpdateView</a></li><li><a href="#toc9" tabindex="0">Django：DeleteView</a></li></ol></li><li><a href="#toc10" tabindex="0">ビューのテスト</a><ol><li><a href="#toc11" tabindex="0">ステップ1：テストケースの作成</a></li><li><a href="#toc12" tabindex="0">ステップ2：テストメソッドの定義</a></li><li><a href="#toc13" tabindex="0">ステップ3：ビューのテスト</a></li></ol></li><li><a href="#toc14" tabindex="0">Django：ビュー（views.py）のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Djangoのビュー（view）とは？</span></h2>



<p>Djangoにおけるビューは、<strong><span class="marker-under">ユーザーからのリクエストを受け取り、それに基づいたレスポンスを生成するコンポーネント</span></strong>です。つまり、ユーザーとアプリケーションの間のインターフェースの役割を果たします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ビューはDjangoアプリケーションの中心的な部分であり、その動作を理解することは、Djangoでの開発スキルを向上させるために重要です。</p>
</div></div>



<p>ビューは基本的にPythonの<a href="https://it-biz.online/python/def/">関数</a>または<a href="https://it-biz.online/python/class-2/">クラス</a>として定義されます。その役割はユーザーからのHTTPリクエストを受け取り、HTTPレスポンスを返すことです。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="716" height="237" src="https://it-biz.online/wp-content/uploads/2023/07/image.png" alt="Djangoのビュー" class="wp-image-8015" srcset="https://it-biz.online/wp-content/uploads/2023/07/image.png 716w, https://it-biz.online/wp-content/uploads/2023/07/image-300x99.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-500x166.png 500w" sizes="(max-width: 716px) 100vw, 716px" /><figcaption class="wp-element-caption">図1：Djangoのビュー</figcaption></figure>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/http/">HTTPリクエスト/HTTPレスポンスとは？</a></p>



<p>このレスポンスは通常、<a href="https://it-biz.online/web-design/html-basic/">HTML形式</a>のWebページですが、JSON形式のデータや、リダイレクト、404エラーなど、他の任意の形式のレスポンスも可能です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ビューは<code><strong>views.py</strong></code>という名前のPythonファイルに定義されます。このファイルはDjangoアプリケーションを作成した際に自動的にディレクトリ内に保存されます。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="501" src="https://it-biz.online/wp-content/uploads/2023/07/image-1-1024x501.png" alt="Django view.py" class="wp-image-8016" srcset="https://it-biz.online/wp-content/uploads/2023/07/image-1-1024x501.png 1024w, https://it-biz.online/wp-content/uploads/2023/07/image-1-300x147.png 300w, https://it-biz.online/wp-content/uploads/2023/07/image-1-500x245.png 500w, https://it-biz.online/wp-content/uploads/2023/07/image-1-768x376.png 768w, https://it-biz.online/wp-content/uploads/2023/07/image-1-800x392.png 800w, https://it-biz.online/wp-content/uploads/2023/07/image-1.png 1087w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図2：Django view.py</figcaption></figure>
</div></div>



<p>ビューの基本的な<strong>作成方法は2つ</strong>。１つは関数ベースのビュー、もう１つはクラスベースのビューです。</p>



<p>以下に、関数ベースのビューとクラスベースのビューの特徴と違いを表形式で整理しました。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th></th><th>関数ベースビュー</th><th>クラスベースビュー</th></tr></thead><tbody><tr><td>定義方法</td><td>Pythonの関数として定義</td><td>Pythonのクラスとして定義</td></tr><tr><td>適用範囲</td><td>小規模なアプリケーションや単純なビュー</td><td>大規模なアプリケーションや複雑なビュー</td></tr><tr><td>特徴</td><td>シンプルで直感的な構造</td><td>再利用性と拡張性が高い</td></tr><tr><td>メソッド</td><td>HTTPメソッド（GET, POSTなど）ごとに条件分岐が必要</td><td>HTTPメソッドごとに異なるメソッド（get(), post()など）を定義できる</td></tr><tr><td>ミックスイン</td><td>使用不可</td><td>使用可能（複数のビヘイビアを組み合わせることが可能）</td></tr><tr><td>例</td><td><code>def hello_world(request): return HttpResponse("Hello, World!")</code></td><td><code>class HelloWorldView(TemplateView): template_name = "hello_world.html"</code></td></tr></tbody></table></div></figure>



<p>関数ベースのビューはそのシンプルさから理解しやすく、小規模なアプリケーションや単純なビューの作成に適しています。一方、クラスベースのビューは再利用性と拡張性が高く、大規模なアプリケーションや複雑なビューの作成に適しているのが特徴。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>それぞれの作成方法について次の章で解説していきます。Djangoのビューについてさらに深掘りしていきましょう。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">関数ベースビューの作成</span></h2>



<p>関数ベースのビューは、Pythonの関数として定義され、<strong><span class="marker-under">１つのHTTPリクエストに対して１つのHTTPレスポンスを返します。</span></strong></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この関数は、リクエストを引数として受け取り、レスポンスを戻り値として返します。</p>
</div></div>



<p>早速、具体的なコードを見てみましょう。以下は、最も基本的な関数ベースのビューの例です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.http import HttpResponse

def hello_world(request):
    return HttpResponse("Hello, World!")</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/py-import/">import文 </a>/ <a href="https://it-biz.online/python/def/">def文</a></p>



<p>このコードは、<code>hello_world</code>という名前のビューを定義。このビューは、HTTPリクエストを受け取り、"Hello, World!"というテキストを含むHTTPレスポンスを返します。</p>



<p>関数ベースのビューは、そのシンプルさから、小規模なアプリケーションや単純なビューの作成に適しています。しかし、<strong>大規模なアプリケーションや複雑なビューを作成する場合には、クラスベースのビューを使用することが推奨</strong>されます。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>先ほどのビューをDjangoアプリケーションで使用するには、URLconf（URL設定）にこのビューを追加する必要があります。</p>



<p>URLconfは、URLとビューをマッピングするための設定で、<code>urls.py</code>という名前のPythonファイルに定義されます。以下は、先ほど定義した<code>hello_world</code>ビューをURLconfに追加する例です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path
from .views import hello_world

urlpatterns = [
    path('hello/', hello_world),
]</pre>



<p>例えば、あなたがローカル環境でDjangoアプリケーションを実行しているとします。通常、ローカル環境でDjangoアプリケーションを実行すると、<code>http://127.0.0.1:8000/</code>または<code>http://localhost:8000/</code>というURLでアクセスできます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このとき、<code>hello_world</code>ビューを<code>/hello/</code>というURLにマッピングした場合、<code>http://127.0.0.1:8000/hello/</code>または<code>http://localhost:8000/hello/</code>というURLにアクセスすると、"Hello, World!"というテキストが表示されます。</p>
</div></div>
</div>



<h2 class="wp-block-heading"><span id="toc3">クラスベースビューの作成</span></h2>



<p>関数ベースのビューがシンプルで直感的な一方で、クラスベースのビューはその再利用性と拡張性から、より大規模なアプリケーションや複雑なビューの作成に適しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>クラスベースのビューはPythonのクラスとして定義され、Djangoが提供するビューの親クラスを継承して作成します。</p>
</div></div>



<p>早速、こちらも具体的なコードを見てみましょう。以下は、最も基本的なクラスベースのビューの例です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic import TemplateView

class HelloWorldView(TemplateView):
    template_name = "hello_world.html"</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/class-2/">class文</a> / <a href="https://it-biz.online/python/variable-python/">変数の基本</a></p>



<p>このコードは、<code>HelloWorldView</code>という名前のビューを定義。このビューは、<code>TemplateView</code>というDjangoが提供するビューの親クラスを継承しており、<code>hello_world.html</code>というテンプレートを使用してHTTPレスポンスを生成します。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>このビューをDjangoアプリケーションで使用するには、関数ベースのビューと同様に、URLconfにこのビューを追加する必要があります。</p>



<p><strong>ただし、クラスベースのビューをURLconfに追加するときには、ビューのクラス名に<code>as_view()</code>メソッドを追加する必要</strong>があります。以下は、先ほど定義した<code>HelloWorldView</code>ビューをURLconfに追加する例です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.urls import path
from .views import HelloWorldView

urlpatterns = [
    path('hello/', HelloWorldView.as_view()),
]</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このコードは、<code>/hello/</code>というURLがリクエストされたときに、<code>HelloWorldView</code>ビューが呼び出されるように設定しています。つまり、ユーザーが<code>http://127.0.0.1:8000/hello/</code>または<code>http://localhost:8000/hello/</code>というURLにアクセスすると、<code>hello_world.html</code>というテンプレートが表示されます。</p>
</div></div>
</div>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th></th><th>関数ベースビュー</th><th>クラスベースビュー</th></tr></thead><tbody><tr><td>定義方法</td><td>Pythonの関数として定義</td><td>Pythonのクラスとして定義</td></tr><tr><td>適用範囲</td><td>小規模なアプリケーションや単純なビュー</td><td>大規模なアプリケーションや複雑なビュー</td></tr><tr><td>特徴</td><td>シンプルで直感的な構造</td><td>再利用性と拡張性が高い</td></tr><tr><td>メソッド</td><td>HTTPメソッド（GET, POSTなど）ごとに条件分岐が必要</td><td>HTTPメソッドごとに異なるメソッド（get(), post()など）を定義できる</td></tr><tr><td>ミックスイン</td><td>使用不可</td><td>使用可能（複数のビヘイビアを組み合わせることが可能）</td></tr><tr><td>例</td><td><code>def hello_world(request): return HttpResponse("Hello, World!")</code></td><td><code>class HelloWorldView(TemplateView): template_name = "hello_world.html"</code></td></tr></tbody></table></div></figure>



<p>以上が、クラスベースのビューの基本的な作成方法とその使用方法です。次の章では、クラスベースのビューをさらに拡張する方法について解説します。</p>



<h2 class="wp-block-heading"><span id="toc4">クラスベースビューの拡張（汎用ビューの活用）</span></h2>



<p>クラスベースのビューは、その再利用性と拡張性から、より<strong><span class="marker-under">大規模なアプリケーションや複雑なビューの作成</span></strong>に適しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Djangoの汎用ビュー（Generic Views）は、一般的なWeb開発タスクを簡単に行うための、多くの組み込みビューを提供しています。これらのビューは、クラスベースのビューを拡張して作成されています。汎用ビューを使用すると、特定のタスクを実行するためのコードを大幅に減らすことができます。</p>
</div></div>



<p>たとえば、Djangoには、データベースからオブジェクトを取得して表示するための<code>ListView</code>、新しいオブジェクトを作成するための<code>CreateView</code>、既存のオブジェクトを更新するための<code>UpdateView</code>、オブジェクトを削除するための<code>DeleteView</code>など、多くの汎用ビューがあります。</p>



<h3 class="wp-block-heading"><span id="toc5">Django：ListView</span></h3>



<p><code>ListView</code>は、あるモデルのオブジェクトのリストを表示するためのビューです。デフォルトでは、これは全てのオブジェクトを取得しますが、<code>get_queryset</code>メソッドをオーバーライドすることでカスタマイズできます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic import ListView
from .models import Book

class BookListView(ListView):
    model = Book
    template_name = 'books/book_list.html'  # &lt;app>/&lt;model>_&lt;viewtype>.html</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このビューは、<code>Book</code>モデルの全インスタンスをリストで表示するビューです。<code>template_name</code>で指定されたテンプレートを用いて表示します。ここでは <code>books/book_list.html</code> と指定しています。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/python/models/">Djangoのモデル</a></p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">Django：DetailView</span></h3>



<p><code>DetailView</code>は、単一のオブジェクトの詳細を表示するためのビューです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic import DetailView
from .models import Book

class BookDetailView(DetailView):
    model = Book
    template_name = 'books/book_detail.html'  # &lt;app>/&lt;model>_&lt;viewtype>.html</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このビューは、<code>Book</code>モデルの単一のインスタンス（＝レコード）の詳細を表示するビューです。具体的なインスタンスはURLから取得されます（一般的にはプライマリキー）。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">Django：CreateView</span></h3>



<p><code>CreateView</code>は、新たなオブジェクトを作成するためのビューです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic.edit import CreateView
from .models import Book

class BookCreateView(CreateView):
    model = Book
    fields = ['name', 'author', 'price']  # ここにモデルのフィールドを記述
    template_name = 'books/book_form.html'  # &lt;app>/&lt;model>_&lt;viewtype>.html</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このビューは、新しい<code>Book</code>インスタンスを作成するためのフォームを表示し、そのフォームの送信を処理するビューです。ここで<code>fields</code>は<a href="https://it-biz.online/web-design/form/">フォーム</a>に表示するフィールドを指定します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc8">Django：UpdateView</span></h3>



<p><code>UpdateView</code>は、既存のオブジェクトを更新するためのビューです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic.edit import UpdateView
from .models import Book

class BookUpdateView(UpdateView):
    model = Book
    fields = ['name', 'author', 'price']
    template_name = 'books/book_form.html'  # &lt;app>/&lt;model>_&lt;viewtype>.html</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このビューは、既存の<code>Book</code>インスタンスを更新するためのフォームを表示し、そのフォームの送信を処理します。編集するインスタンスはURLから取得されます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc9">Django：DeleteView</span></h3>



<p><code>DeleteView</code>は、既存のオブジェクトを削除するためのビューです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.views.generic.edit import DeleteView
from .models import Book

class BookDeleteView(DeleteView):
    model = Book
    template_name = 'books/book_confirm_delete.html'  # &lt;app>/&lt;model>_&lt;viewtype>.html
    success_url = '/'  # 削除後にリダイレクトするURL</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このビューは、既存の<code>Book</code>インスタンスを削除するための確認ページを表示し、その削除を処理します。削除するインスタンスはURLから取得されます。削除が成功した後は<code>success_url</code>で指定したURLにリダイレクトされます。</p>
</div></div>



<p>以上が、Djangoの汎用ビューの基本的な活用方法とその使用方法です。このように、汎用ビューを使用すると、一般的なWeb開発タスクを簡単に行うことができます。</p>



<h2 class="wp-block-heading"><span id="toc10">ビューのテスト</span></h2>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>最後に、作成したビューを簡単にテストする方法をご紹介します。</p>
</div></div>



<p>Djangoビューのテストは、アプリケーションの品質を確保するために重要なステップです。テストを行うことで、ビューが期待通りに動作することを確認し、エラーやバグを早期に発見することが可能に。</p>



<p>Djangoはビューのテストを支援するための強力なツールを提供しており、それは<strong><span class="marker-under"><code>django.test</code>モジュールの<code>TestCase</code>クラス</span></strong>という形で用意されています。</p>



<p>我々はこのクラスをうまく使用することで、簡単にビューのテストを行うことができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下に、ビューのテストの基本的な手順を示します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc11">ステップ1：テストケースの作成</span></h3>



<p>まず、<code>django.test.TestCase</code>を継承したクラスを作成します。このクラス内にテストメソッドを定義します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from django.test import TestCase

class MyViewTest(TestCase):
    ...</pre>



<h3 class="wp-block-heading"><span id="toc12">ステップ2：テストメソッドの定義</span></h3>



<p>次に、テストケースクラス内にテストメソッドを定義します。テストメソッドの<strong>名前は<code>test_</code>で始まる必要があります。</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">def test_my_view(self):
    ...</pre>



<h3 class="wp-block-heading"><span id="toc13">ステップ3：ビューのテスト</span></h3>



<p>最後に、<code>TestCase</code>クラスの<code>client</code>属性を使用して、ビューにリクエストを送信し、レスポンスを検証します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">response = self.client.get('/my-view-url/')
self.assertEqual(response.status_code, 200)</pre>



<p>このコードは、<code>/my-view-url/</code>にGETリクエストを送信し、レスポンスのステータスコードが200（成功）であることを確認しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以上が、Djangoのビューのテストの基本的な手順です。このように、Djangoのテストフレームワークを使用すると、ビューのテストを簡単に行うことができます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc14">Django：ビュー（views.py）のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<ol class="wp-block-list">
<li><strong>ビューの基本</strong>: Djangoのビューは、ユーザーからのリクエストを受け取り、レスポンスを生成する役割を果たします。ビューは関数またはクラスとして定義されます。</li>



<li><strong>関数ベースビュー</strong>: 関数ベースビューは、シンプルで直感的なビューの作成方法です。一つの関数が一つのビューを表します。</li>



<li><strong>クラスベースビュー</strong>: クラスベースビューは、より複雑なビューの作成やコードの再利用を可能にします。ビューの振る舞いをカスタマイズするために、クラスの継承やミックスインを利用できます。</li>



<li><strong>汎用ビュー</strong>: Djangoは、一般的なウェブ開発タスクを簡単に行うための汎用ビューを提供しています。これらは、リストビュー、ディティールビュー、フォームビューなど、特定の用途に最適化されたクラスベースビューです。</li>



<li><strong>ビューのテスト</strong>: Djangoのテストフレームワークを使用して、ビューの動作を確認するテストを作成できます。これにより、コードの品質を保証し、バグを早期に発見できます。</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初めてPythonを勉強するのは結構難しいですよね。</p>



<p>でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。</p>
</div></div>



<p>Pythonをはじめとするプログラミングスキルを武器に、<strong><span class="marker-under">時間と場所に捉われない自由な生き方</span></strong>を目指してみませんか？今すぐ行動したい方は以下の記事をチェック！</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://it-biz.online/lifehack/programming/" class="btn btn-m btn-circle btn-shine has-text-color has-background has-cocoon-black-color has-orange-background-color" target="_self">【無料】プログラミングスクールの探し方 ></a></div>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/python/python-roadmap/">Python入門：学習カリキュラム</a>　←こちらから！</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
