<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.typea.info/tips_/index.php?action=history&amp;feed=atom&amp;title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1</id>
	<title>Django 最初のアプリケーション 1 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://www.typea.info/tips_/index.php?action=history&amp;feed=atom&amp;title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1"/>
	<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;action=history"/>
	<updated>2026-05-09T06:09:00Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=5930&amp;oldid=prev</id>
		<title>2020年2月16日 (日) 04:24にPirotoによる</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=5930&amp;oldid=prev"/>
		<updated>2020-02-16T04:24:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;amp;diff=5930&amp;amp;oldid=4840&quot;&gt;差分を表示&lt;/a&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=4840&amp;oldid=prev</id>
		<title>2020年2月15日 (土) 08:35にPirotoによる</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=4840&amp;oldid=prev"/>
		<updated>2020-02-15T08:35:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2020年2月15日 (土) 08:35時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]]] Django][[Python]][[[[次]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| &lt;/ins&gt;] Django][[Python]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| &lt;/ins&gt;[[[[次]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pythonの概要も分かり易い.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pythonの概要も分かり易い.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l353&quot; &gt;353行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;353行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;blockquote&amp;amp;gt;APIは自動的にリレーションシップ(参照整合性制約)をフォローする。アンダースコアの2重続きは、リレーションシップを区別する&amp;amp;lt;/blockquote&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;blockquote&amp;amp;gt;APIは自動的にリレーションシップ(参照整合性制約)をフォローする。アンダースコアの2重続きは、リレーションシップを区別する&amp;amp;lt;/blockquote&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]]] [[[次]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;| &lt;/ins&gt;] [[[次]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=4024&amp;oldid=prev</id>
		<title>2020年2月15日 (土) 08:19にPirotoによる</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=4024&amp;oldid=prev"/>
		<updated>2020-02-15T08:19:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2020年2月15日 (土) 08:19時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]] Django][Python][[[次]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/ins&gt;]] Django]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/ins&gt;[Python]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;][&lt;/ins&gt;[[[次]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pythonの概要も分かり易い.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pythonの概要も分かり易い.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l353&quot; &gt;353行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;353行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;blockquote&amp;amp;gt;APIは自動的にリレーションシップ(参照整合性制約)をフォローする。アンダースコアの2重続きは、リレーションシップを区別する&amp;amp;lt;/blockquote&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;blockquote&amp;amp;gt;APIは自動的にリレーションシップ(参照整合性制約)をフォローする。アンダースコアの2重続きは、リレーションシップを区別する&amp;amp;lt;/blockquote&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]] [[次]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Django 最初のアプリケーション 2]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;] [&lt;/ins&gt;[[次]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=3124&amp;oldid=prev</id>
		<title>2020年2月15日 (土) 08:01にPirotoによる</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=3124&amp;oldid=prev"/>
		<updated>2020-02-15T08:01:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;amp;diff=3124&amp;amp;oldid=1832&quot;&gt;差分を表示&lt;/a&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
	<entry>
		<id>https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=1832&amp;oldid=prev</id>
		<title>Piroto: ページの作成:「==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==  [Django 最初のアプリケーション 2]] Django][Python][[[次]    Pythonの概…」</title>
		<link rel="alternate" type="text/html" href="https://www.typea.info/tips_/index.php?title=Django_%E6%9C%80%E5%88%9D%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_1&amp;diff=1832&amp;oldid=prev"/>
		<updated>2020-02-15T07:31:37Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==  [Django 最初のアプリケーション 2]] Django][Python][[[次]    Pythonの概…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Django 最初のアプリケーション 1 (環境設定～モデルの作成)==&lt;br /&gt;
[Django 最初のアプリケーション 2]] Django][Python][[[次]&lt;br /&gt;
&lt;br /&gt;
Pythonの概要も分かり易い.&lt;br /&gt;
{{amazon|477413760X}}&lt;br /&gt;
&lt;br /&gt;
*[http://www.djangobook.com/en/1.0/ The Django Book]&lt;br /&gt;
&lt;br /&gt;
*http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01&lt;br /&gt;
を参考にサンプルアプリケーションを作成してみる&lt;br /&gt;
&lt;br /&gt;
===Djangoがインストールされている===&lt;br /&gt;
*Django インストール&lt;br /&gt;
=====import django がpythonインタプリタから行えること=====&lt;br /&gt;
 # python&lt;br /&gt;
 Python 2.6.2 (r262:71600, Jun 13 2009, 02:28:29) &lt;br /&gt;
 [GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2&lt;br /&gt;
 Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
=====Helpを確認=====&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; help(django)&lt;br /&gt;
 Help on package django:&lt;br /&gt;
 &lt;br /&gt;
 NAME&lt;br /&gt;
     django&lt;br /&gt;
 &lt;br /&gt;
 FILE&lt;br /&gt;
     /usr/local/lib/python2.6/site-packages/django/__init__.py&lt;br /&gt;
 &lt;br /&gt;
 PACKAGE CONTENTS&lt;br /&gt;
     bin (package)&lt;br /&gt;
     conf (package)&lt;br /&gt;
     contrib (package)&lt;br /&gt;
        :&lt;br /&gt;
===プロジェクトの作成===&lt;br /&gt;
====django-admin.py コマンドの実行====&lt;br /&gt;
*Djangoを最初に利用する場合、初期化処理を行う必要がある&lt;br /&gt;
*コードを置こうと思っているディレクトリで、以下のコマンドを実行(mysiteディレクトリが作成される)&lt;br /&gt;
 # django-admin.py startproject mysite&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&amp;lt;blockquote&amp;gt;プロジェクト名に、djangoやtestは避けること&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
*django-admin.py は、Django を setpu.py でインストールしたシステムパス(/usr/local/binのような)にある。&lt;br /&gt;
 # whereis django-admin.py&lt;br /&gt;
 django-admin: /usr/local/bin/django-admin.py&lt;br /&gt;
&lt;br /&gt;
====作成されるファイル====&lt;br /&gt;
*startprojectは以下のファイルを作成&lt;br /&gt;
 # tree&lt;br /&gt;
 .&lt;br /&gt;
 `-- mysite&lt;br /&gt;
     |-- __init__.py&lt;br /&gt;
     |-- manage.py&lt;br /&gt;
     |-- settings.py&lt;br /&gt;
     `-- urls.py&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ファイル&lt;br /&gt;
!概要&lt;br /&gt;
|-&lt;br /&gt;
|＿＿init＿＿.py&lt;br /&gt;
|このディレクトリがパッケージだとPythonに伝える空のファイル&lt;br /&gt;
|-&lt;br /&gt;
|manage.py&lt;br /&gt;
|プロジェクトと対話するためのコマンドラインユーティリティ&lt;br /&gt;
|-&lt;br /&gt;
|settings.py&lt;br /&gt;
|プロジェクトの設定ファイル&lt;br /&gt;
|-&lt;br /&gt;
|urls.py&lt;br /&gt;
|プロジェクトのURL宣言 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===開発サーバー===&lt;br /&gt;
*mysiteディレクトリへ入って、以下を実行&lt;br /&gt;
 # python manage.py runserver&lt;br /&gt;
 Validating models...&lt;br /&gt;
 0 errors found&lt;br /&gt;
 &lt;br /&gt;
 Django version 1.0.2 final, using settings 'mysite.settings'&lt;br /&gt;
 Development server is running at http://127.0.0.1:8000/&lt;br /&gt;
 Quit the server with CONTROL-C.&lt;br /&gt;
*開発サーバーを起動すると、Pythonで書かれた軽量サーバーが http://127.0.0.1:8000/ で起動する&lt;br /&gt;
====起動ポート、IPアドレスを変更する====&lt;br /&gt;
*デフォルトで開発サーバーはポート8000で起動するが、ポートを指定して起動することもできる。&lt;br /&gt;
 # python manage.py runserver 8080&lt;br /&gt;
*IPアドレスはローカルホストしかリッスンしていないようだが、指定することができる&lt;br /&gt;
 # python manage.py runserver 192.168.24.14:8080&lt;br /&gt;
 Validating models...&lt;br /&gt;
 0 errors found&lt;br /&gt;
 &lt;br /&gt;
 Django version 1.0.2 final, using settings 'mysite.settings'&lt;br /&gt;
 Development server is running at http://192.168.24.14:8080/&lt;br /&gt;
 Quit the server with CONTROL-C.&lt;br /&gt;
=====起動=====&lt;br /&gt;
[[File:0350_django_firstapp01.jpg]]&lt;br /&gt;
&lt;br /&gt;
===データベースの設定===&lt;br /&gt;
*データベースの接続設定に応じて、setting.pyを編集する。&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!設定項目&lt;br /&gt;
!内容&lt;br /&gt;
|-&lt;br /&gt;
|DATABASE_ENGINE&lt;br /&gt;
|'postgresql_psycopg2'、'mysql'、'sqlite3'その他&lt;br /&gt;
|-&lt;br /&gt;
|DATABASE_NAME&lt;br /&gt;
|データベース名。SQLiteの場合、絶対パス名存在しない場合、初回自動的に作成される。&lt;br /&gt;
|-&lt;br /&gt;
|DATABASE_USER&lt;br /&gt;
| データベースユーザー名。SQLiteの場合不要&lt;br /&gt;
|-&lt;br /&gt;
|DATABASE_PASSWORD&lt;br /&gt;
|データベースパスワード。SQLiteの場合不要&lt;br /&gt;
|-&lt;br /&gt;
|DATABASE_HOST&lt;br /&gt;
|データーベースのホスト。設定しない場合、物理的に同じマシンとみなされる。SQLiteでは不要&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SQLiteは、Pytho2.5以降に含まれる====&lt;br /&gt;
*SQLiteを使用する場合、DATABASE_ENGINEに sqlite3を指定する&lt;br /&gt;
*Python2.5以降に含まれるため、他にインストール等不要&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;SQLiteを指定した場合準備は不要。データベースファイルは必要になったときに作成される&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PostgreSQLを利用してみる====&lt;br /&gt;
*PostgreSQL 8.3.5 インストール&lt;br /&gt;
*PostgresSQL 8.3.5 起動と停止&lt;br /&gt;
*PostgreSQL pgAdminのインストール&lt;br /&gt;
&lt;br /&gt;
 DATABASE_ENGINE = 'postgresql_psycopg2'&lt;br /&gt;
 DATABASE_NAME = 'testdb'&lt;br /&gt;
 DATABASE_USER = 'postgres'&lt;br /&gt;
 DATABASE_PASSWORD = '******'&lt;br /&gt;
 DATABASE_HOST = ''&lt;br /&gt;
 DATABASE_PORT = '5432'&lt;br /&gt;
&lt;br /&gt;
====psycopg Python-PostgreSQL Database Adapterのインストール====&lt;br /&gt;
http://www.initd.org/pub/software/psycopg/&lt;br /&gt;
http://www.initd.org/pub/software/psycopg/psycopg2-2.0.11.tar.gz&lt;br /&gt;
&lt;br /&gt;
*次のステップで、以下を行うとエラー&lt;br /&gt;
 # python manage.py syncdb &lt;br /&gt;
      ：&lt;br /&gt;
 raise ImproperlyConfigured(&amp;quot;Error loading psycopg2 module: %s&amp;quot; % e)&lt;br /&gt;
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2&lt;br /&gt;
&lt;br /&gt;
=====psycopg のインストール=====&lt;br /&gt;
 # wget http://www.initd.org/pub/software/psycopg/psycopg2-2.0.11.tar.gz&lt;br /&gt;
 # tar zxvf psycopg2-2.0.11.tar.gz&lt;br /&gt;
*解凍してできたディレクトリで、以下を実行&lt;br /&gt;
 # python setup.py install&lt;br /&gt;
*インポートできるか？ &lt;br /&gt;
 #python&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import psycopg2&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
   File &amp;quot;/usr/local/lib/python2.6/site-packages/psycopg2/__init__.py&amp;quot;, line 60, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID&lt;br /&gt;
 ImportError: libpq.so.5: cannot open shared object file: No such file or directory&lt;br /&gt;
*[PostgreSQL 8.3.5 インストール] [libpq.so が見つからないエラー]&lt;br /&gt;
 # LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====syncdbの実行====&lt;br /&gt;
=====PostgreSQLを起動しておく=====&lt;br /&gt;
 #pg_ctl start&lt;br /&gt;
=====syncdbコマンドの実行=====&lt;br /&gt;
 # python manage.py syncdb&lt;br /&gt;
 Creating table auth_permission&lt;br /&gt;
 Creating table auth_group&lt;br /&gt;
 Creating table auth_user&lt;br /&gt;
 Creating table auth_message&lt;br /&gt;
 Creating table django_content_type&lt;br /&gt;
 Creating table django_session&lt;br /&gt;
 Creating table django_site&lt;br /&gt;
 &lt;br /&gt;
 You just installed Django's auth system, which means you don't have any superusers defined.&lt;br /&gt;
 Would you like to create one now? (yes/no): yes&lt;br /&gt;
 Username (Leave blank to use 'root'): &lt;br /&gt;
 Error: That e-mail address is invalid.&lt;br /&gt;
 E-mail address: piroto@typea.info&lt;br /&gt;
 Password: &lt;br /&gt;
 Password (again): &lt;br /&gt;
 Superuser created successfully.&lt;br /&gt;
 Installing index for auth.Permission model&lt;br /&gt;
 Installing index for auth.Message model&lt;br /&gt;
*上記テーブルが作成された&lt;br /&gt;
[[File:0351_django_firstapp02.jpg]]&lt;br /&gt;
=====INSTALLED_APPS設定=====&lt;br /&gt;
*INSTALLED_APPS変数は、このDjangoインスタンスからアクティベートされるすべてのDjangoアプリケーションで保持される&lt;br /&gt;
 INSTALLED_APPS = (&lt;br /&gt;
     'django.contrib.auth',&lt;br /&gt;
     'django.contrib.contenttypes',&lt;br /&gt;
     'django.contrib.sessions',&lt;br /&gt;
     'django.contrib.sites',&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
===モデルの生成===&lt;br /&gt;
====アプリケーションの作成====&lt;br /&gt;
*ここまでで、プロジェクト環境は作成された&lt;br /&gt;
*Djangoのアプリケーションは、Pythonのパッケージ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;プロジェクトは設定のコレクションであり、アプリケーションは特定のWebサイト。プロジェクトは複数のアプリケーションを含み、アプリケーションは複数のプロジェクトに属すことができる&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=====サンプルアプリケーション(polls)の作成=====&lt;br /&gt;
 # python manage.py startapp polls&lt;br /&gt;
=====作成されるファイル=====&lt;br /&gt;
 # tree ./polls&lt;br /&gt;
 ./polls&lt;br /&gt;
 |-- __init__.py&lt;br /&gt;
 |-- models.py&lt;br /&gt;
 `-- views.py&lt;br /&gt;
&lt;br /&gt;
====モデルの作成====&lt;br /&gt;
*Django Web アプリケーションでは、モデルを定義する&lt;br /&gt;
*単純なサンプルアプリケーション(poll)では、2つのモデル polls、choicesを作成する&lt;br /&gt;
*pollは、質問と発表日、choiceは選択テキストと同意への投票の2つのフィールドを持つ&lt;br /&gt;
*/polls/models.pyに記述&lt;br /&gt;
&lt;br /&gt;
 from django.db import models&lt;br /&gt;
 &lt;br /&gt;
 class Poll(models.Model):&lt;br /&gt;
         question = models.CharField(max_length=200)&lt;br /&gt;
         pub_date = models.DateField('date published')&lt;br /&gt;
 &lt;br /&gt;
 class Choice(models.Model):&lt;br /&gt;
         poll = models.ForeignKey(Poll)&lt;br /&gt;
         choice = models.CharField(max_length=200)&lt;br /&gt;
         votes = models.IntegerField()&lt;br /&gt;
&lt;br /&gt;
====モデルの開始====&lt;br /&gt;
&lt;br /&gt;
====settings.pyを以下のように編集====&lt;br /&gt;
 INSTALLED_APPS = (&lt;br /&gt;
     'django.contrib.auth',&lt;br /&gt;
     'django.contrib.contenttypes',&lt;br /&gt;
     'django.contrib.sessions',&lt;br /&gt;
     'django.contrib.sites',&lt;br /&gt;
     'mysite.polls'&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
====DDLの確認～テーブルの生成====&lt;br /&gt;
*Djangoは、pollsを含むmysiteを認識しているので、以下のコマンドを実行&lt;br /&gt;
*[PostgresSQL 8.3.5 起動と停止] [データベースを起動しておく]&lt;br /&gt;
=====DDLを発行し、テープルを作成する=====&lt;br /&gt;
 # python manage.py sql polls&lt;br /&gt;
 BEGIN;&lt;br /&gt;
 CREATE TABLE &amp;quot;polls_poll&amp;quot; (&lt;br /&gt;
     &amp;quot;id&amp;quot; serial NOT NULL PRIMARY KEY,&lt;br /&gt;
     &amp;quot;question&amp;quot; varchar(200) NOT NULL,&lt;br /&gt;
     &amp;quot;pub_date&amp;quot; date NOT NULL&lt;br /&gt;
 )&lt;br /&gt;
 ;&lt;br /&gt;
 CREATE TABLE &amp;quot;polls_choice&amp;quot; (&lt;br /&gt;
     &amp;quot;id&amp;quot; serial NOT NULL PRIMARY KEY,&lt;br /&gt;
     &amp;quot;poll_id&amp;quot; integer NOT NULL REFERENCES &amp;quot;polls_poll&amp;quot; (&amp;quot;id&amp;quot;) DEFERRABLE   INITIALLY DEFERRED,&lt;br /&gt;
     &amp;quot;choice&amp;quot; varchar(200) NOT NULL,&lt;br /&gt;
     &amp;quot;votes&amp;quot; integer NOT NULL&lt;br /&gt;
 )&lt;br /&gt;
 ;&lt;br /&gt;
 COMMIT;&lt;br /&gt;
=====テーブルの生成=====&lt;br /&gt;
 # python manage.py syncdb&lt;br /&gt;
 Creating table polls_poll&lt;br /&gt;
 Creating table polls_choice&lt;br /&gt;
 Installing index for polls.Choice model&lt;br /&gt;
[[File:0352_django_firstapp03.jpg]]&lt;br /&gt;
&lt;br /&gt;
===APIから操作してみる===&lt;br /&gt;
*manage.pyを指定することで、プロジェクト環境が設定される&lt;br /&gt;
**mysiteをsys.pathに設定&lt;br /&gt;
**DJANGO_SETTINGS_MODULE 環境変数の設定&lt;br /&gt;
 # python manage.py shell&lt;br /&gt;
=====Shellからdatabase APIを利用=====&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from mysite.polls.models import Poll,Choice #モデルとクラスのインポート&lt;br /&gt;
 #まだpollsは存在していない&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.all()&lt;br /&gt;
 []&lt;br /&gt;
 #pollを生成&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import datetime&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p = Poll(question=&amp;quot;What's up?&amp;quot;,pub_date=datetime.datetime.now())&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
 1L&lt;br /&gt;
 #Pythonの属性を経由してデータベースのカラムにアクセス&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.question&lt;br /&gt;
 &amp;quot;What's up?&amp;quot;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.pub_date&lt;br /&gt;
 datetime.datetime(2009, 6, 16, 8, 54, 31, 757771)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
 #データベース上のpollを表示&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.all()&lt;br /&gt;
 [&amp;lt;Poll: Poll object&amp;gt;]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
データベース上にデータが作成されている&lt;br /&gt;
[[File:0353_django_firstapp04.jpg]]&lt;br /&gt;
====＿＿unicode＿＿メソッドの追加====&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.all()&lt;br /&gt;
 [&amp;lt;Poll: Poll object&amp;gt;]&lt;br /&gt;
*この出力では、このオブジェクトを表現するには役に立っていないので、polls/models.py のクラスに＿＿unicode＿＿メソッドを追加する&lt;br /&gt;
&lt;br /&gt;
 class Poll(models.Model):&lt;br /&gt;
           :&lt;br /&gt;
         def __unicode__(self):&lt;br /&gt;
                 return self.question&lt;br /&gt;
 class Choice(models.Model):&lt;br /&gt;
           :&lt;br /&gt;
         def __unicode__(self):                &lt;br /&gt;
                return self.choice&lt;br /&gt;
&lt;br /&gt;
*出力がこうなる&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.all()&lt;br /&gt;
 [&amp;lt;Poll: What's up?&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
====カスタムメソッドの追加====&lt;br /&gt;
*python通常のメソッドを追加して、簡単なデモ&lt;br /&gt;
 import datetime&lt;br /&gt;
 class Poll(models.Model):&lt;br /&gt;
           :&lt;br /&gt;
         def was_published_today(self):&lt;br /&gt;
                 return self.pub_date == datetime.date.today()&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from mysite.polls.models import Poll,Choice&lt;br /&gt;
 &lt;br /&gt;
 #Djangoは高機能なlookup APIを提供&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(id=1)&lt;br /&gt;
 [&amp;lt;Poll: What's up?&amp;gt;]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(question__startswith='What')&lt;br /&gt;
 [&amp;lt;Poll: What's up?&amp;gt;]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p = Poll.objects.get(id=1)&lt;br /&gt;
 &lt;br /&gt;
 #カスタムメソッドが動作することを確認&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.was_published_today()&lt;br /&gt;
 True&lt;br /&gt;
 &lt;br /&gt;
 #INSERTステートメントの記述なしに、createの呼び出しでChoiceオブジェクトを生成する&lt;br /&gt;
 #外部キー制約を指定したのでchoice_set が有効&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.choice_set.create(choice='Not much',votes=0)&lt;br /&gt;
 &amp;lt;Choice: Not much&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; p.choice_set.create(choice='The sky',votes=0)&lt;br /&gt;
 &amp;lt;Choice: The sky&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; c = p.choice_set.create(choice='Just hacking again',votes=0)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__pub_date__year=2009)&lt;br /&gt;
 [&amp;lt;Choice: Just hacking again&amp;gt;, &amp;lt;Choice: The sky&amp;gt;, &amp;lt;Choice: Not much&amp;gt;]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; c = p.choice_set.filter(choice__startswith='Just hacking')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; c.delete()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;APIは自動的にリレーションシップ(参照整合性制約)をフォローする。アンダースコアの2重続きは、リレーションシップを区別する&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Django 最初のアプリケーション 2]] [[次]&lt;/div&gt;</summary>
		<author><name>Piroto</name></author>
		
	</entry>
</feed>